前言
第一次拿数论实操 好激动呢(但也好累emm)
思路
分类讨论一下
- b>a 不可能 (余数怎么可能大于本身呢)
- b=a 无限种
- b<a
处理b<a
变换一下方程
( a - b) mod x = 0
因此 x 就是(a-b) 的约数
但是要注意 x>b(余数怎么可能比 (被)除数大呢) |有被坑到
所以我们直接上板子就行
#include <bits/stdc++.h>
using namespace std;
int a,b,cnt;
void solve()
{
cin>>a>>b;
if(b>a)
cout<<0<<endl;
if(a==b)
cout<<"infinity"<<endl;
if(a>b)
{
int d = (a-b);
/// x = (a-b)的约数
/// x > b
for(int i = 1 ;i<= d/i ;i++)
{
if(d%i == 0)
{
if(i>b)cnt++;
if(i!=d/i && d/i >b) cnt++;
}
}
cout<<cnt<<endl;
}
}
int main()
{
solve();
return 0;
}