Codeforces 495 B. Modular Equations && Codeforces Round #282 (Div. 2)

来源:互联网 发布:淘宝首页装修图片 编辑:程序博客网 时间:2024/05/21 22:55

题目链接:

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 .
 当a==b时,直接输出“infinity”。不能直接遍历(O(a-b)),会超时,需要开放求解。

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;}


0 0