Pagini recente » Istoria paginii utilizator/ungureanu_lorin | Monitorul de evaluare | Cod sursa (job #589067) | Monitorul de evaluare | Cod sursa (job #2015250)
#include <bits/stdc++.h>
using namespace std;
int l1[5000001],l2[5000001];
ifstream f("pascal.in");
ofstream g("pascal.out");
int main()
{
int r,d,ct=0,i,x,nr,j,z;
f>>r>>d;
if(d==4) d=2,ct=1;
for(i=1; i<=r; i++)
{
x=i;
if(d!=6)
while(x%d==0)
x/=d,++l1[i];
else
{
while(x%2==0)
x/=2,++l1[i];
while(x%3==0)
x/=3,++l2[i];
}
}
for(i=1; i<=r; ++i)
l1[i]=l1[i-1]+l1[i];
if(d==6)
for(i=1; i<=r; ++i)
l2[i]=l2[i-1]+l2[i];
nr=0;
z=(r-1)/2;
for(i=1; i<=z; ++i)
{
x=l1[r]-l1[i]-l1[r-i];
if(ct==1) x/=2;
if(d!=6 && x>0) nr+=2;
if(d==6 && x>0 && l2[r]-l2[i]-l2[r-i]>0) nr+=2;
}
if(r%2==0){
x=l1[r]-l1[i]-l1[r-i];
if(ct==1) x/=2;
if(d!=6 && x>0) nr++;
if(d==6 && x>0 && l2[r]-l2[i]-l2[r-i]>0) ++nr;
}
g<<sol;
return 0;
}