Pagini recente » Cod sursa (job #1097937) | Cod sursa (job #816361) | Cod sursa (job #2365774) | Cod sursa (job #1770320) | Cod sursa (job #2320193)
#include <fstream>
using namespace std;
ifstream cin ("pascal.in");
ofstream cout ("pascal.out");
long long mod;
long long d[6];
void upd (long long val)
{
while(!(val&1LL))
{
val>>=1LL;
++d[2];
}
while(!(val%3))
{
val/=3;
++d[3];
}
while(!(val%5))
{
val/=5;
++d[5];
}
}
void sct (long long val)
{
while(!(val&1LL))
{
val>>=1LL;
--d[2];
}
while(!(val%3))
{
val/=3;
--d[3];
}
while(!(val%5))
{
val/=5;
--d[5];
}
}
int main()
{
long long r,i,cur=0,cnt=0,inmul,imp=2;
cin>>r>>mod;
inmul=r-1;
upd(r);
if(mod==2 && d[2])
++cnt;
else
if(mod==3 && d[3])
++cnt;
else
if(mod==4 && d[2]>1)
++cnt;
else
if(mod==5 && d[5])
++cnt;
else
if(mod==6 && min(d[2],d[3]))
++cnt;
while(inmul>r/2+1)
{
upd(inmul);
sct(imp);
--inmul;
++imp;
if(mod==2 && d[2])
++cnt;
else
if(mod==3 && d[3])
++cnt;
else
if(mod==4 && d[2]>1)
++cnt;
else
if(mod==5 && d[5])
++cnt;
else
if(mod==6 && min(d[2],d[3]))
++cnt;
}
if(r%2==0)
{
cnt*=2;
upd(inmul);
sct(imp);
--inmul;
++imp;
if(mod==2 && d[2])
++cnt;
else
if(mod==3 && d[3])
++cnt;
else
if(mod==4 && d[2]>1)
++cnt;
else
if(mod==5 && d[5])
++cnt;
else
if(mod==6 && min(d[2],d[3]))
++cnt;
}
else
{
cnt*=2;
}
cout<<cnt;
return 0;
}