Codeforces Round #282 (Div. 2) B. Modular Equations
//#include<cstdio>
//#include<iostream>
//#include<algorithm>
//#include<vector>
//#include<cstring>
//#include<cmath>
//#include<map>
#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false)
#define bfast cin.tie(0)
#define outs(x) cout << x << " "
#define outn(x) cout << x << "\n"
#define sf scanf
#define pf printf
typedef long long LL;
typedef vector<int>vii;
typedef vector<LL>vll;
int main()
{
fast;
LL a , b , cnt=0 , ans=0 , i , div=0, tmp=0;
while(cin >> a >> b)
{
cnt=0;
ans = a - b;
if(ans < 0)
{
cout << "0\n";
continue;
}
else if(ans == 0)
{
cout << "infinity\n";
continue;
}
tmp = ans;
ans = sqrt(double(ans));
bool f=false , fl=false;
if(b == 0)
{
//cout << ans << "\n";
for(i=1; i*i<=tmp; i++)
{
f=fl=false;
div = tmp / i;
if(a % i == b)
{
cnt++;
f=true;
}
if(a % div == b)
{
cnt++;
fl=true;
}
if(f==true and fl==true)
{
if(div == i) cnt--;
}
}
outn(cnt);
continue;
}
//cout << a - b << " ";
if(a % (a - b) == b) cnt++;
else cnt=0;
for(i=2; i*i<=tmp; i++)
{
f=fl=false;
div = tmp / i;
if(a % i == b)
{
//cout << i << " ";
cnt++;
f=true;
}
if(a % div == b)
{
//cout << div << " ";
cnt++;
fl=true;
}
if(f==true and fl==true)
{
if(div == i) cnt--;
}
}
//cout << "\ncnt = " << cnt << "\n";
outn(cnt);
}
return 0;
}
//#include<iostream>
//#include<algorithm>
//#include<vector>
//#include<cstring>
//#include<cmath>
//#include<map>
#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false)
#define bfast cin.tie(0)
#define outs(x) cout << x << " "
#define outn(x) cout << x << "\n"
#define sf scanf
#define pf printf
typedef long long LL;
typedef vector<int>vii;
typedef vector<LL>vll;
int main()
{
fast;
LL a , b , cnt=0 , ans=0 , i , div=0, tmp=0;
while(cin >> a >> b)
{
cnt=0;
ans = a - b;
if(ans < 0)
{
cout << "0\n";
continue;
}
else if(ans == 0)
{
cout << "infinity\n";
continue;
}
tmp = ans;
ans = sqrt(double(ans));
bool f=false , fl=false;
if(b == 0)
{
//cout << ans << "\n";
for(i=1; i*i<=tmp; i++)
{
f=fl=false;
div = tmp / i;
if(a % i == b)
{
cnt++;
f=true;
}
if(a % div == b)
{
cnt++;
fl=true;
}
if(f==true and fl==true)
{
if(div == i) cnt--;
}
}
outn(cnt);
continue;
}
//cout << a - b << " ";
if(a % (a - b) == b) cnt++;
else cnt=0;
for(i=2; i*i<=tmp; i++)
{
f=fl=false;
div = tmp / i;
if(a % i == b)
{
//cout << i << " ";
cnt++;
f=true;
}
if(a % div == b)
{
//cout << div << " ";
cnt++;
fl=true;
}
if(f==true and fl==true)
{
if(div == i) cnt--;
}
}
//cout << "\ncnt = " << cnt << "\n";
outn(cnt);
}
return 0;
}
Comments
Post a Comment