题目链接:
http://codeforces.com/problemset/problem/495/B
解题思路:
Codeforces官方题解:
- If a < b then there is no answer since .
- If a = b then x can be any integer larger than a. so there are infinite number of answers to the equation.
- The only remaining case is when a > b. Suppose x is an answer to our equation. Then x|a - b. Also since then b < x. These conditions are necessary and sufficient as well. So the answer is number of divisors of a - b which are strictly greater than bwhich can be solved in .
AC代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int i,sum=0;
if(a==b)
{
printf("infinity\n");
continue;
}
int t=a-b;
int j=sqrt(t*1.0);
for(i=1;i<=j;i++)
{
if(t%i==0)
{
int tt=t/i;
if(i>b)
sum++;
if(tt!=i&&tt>b)
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}