https://www.acwing.com/problem/content/description/5728/
给定两个非负整数 a,ba,b,请你计算一共有多少个正整数 xx 满足 amodx=bamodx=b。
输入格式
共一行,包含两个非负整数 a,ba,b。
输出格式
如果满足条件的正整数 xx 有无限多个,则输出 infinity
。
否则,输出一个整数,表示满足条件的正整数 xx 的数量。
数据范围
前 55 个测试点满足 0≤a,b≤1000≤a,b≤100。
所有测试点满足 0≤a,b≤1090≤a,b≤109。
输入样例1:
21 5
输出样例1:
2
输入样例2:
10 10
输出样例2:
infinity
#include<iostream>
using namespace std;
int a,b,c;
int z(int d){
int n=0;
for(int i=1;i*i<=d;i++){
if(d%i==0){
int m=i,v=d/i;
if(a%m==b){
n++;
if(m==v)continue;
}
if(a%v==b){
n++;
}
}
}
return n;
}
int main(){
cin >> a >> b;
if(a==b) cout<<"infinity";
else{
c = a - b;
cout << z(c);
}
return 0;
}