Pagini recente » Monitorul de evaluare | Cod sursa (job #411893) | Cod sursa (job #2190354) | Cod sursa (job #2907219) | Cod sursa (job #2091312)
#include <fstream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
int ver(int n,int d)
{
int cnt=0,d1=d;
while(d1<=n&&n!=0)
{
cnt+=n/d1;
d1*=d;
}
return cnt;
}
int cook(int n,int d)
{
int cnt=0;
while(n%d==0&&n!=0)
{
n/=d;
cnt++;
}
return cnt;
}
int main()
{
int r,d,cinci,trei,doi,copi5,copi2,copi3,d2,d3,d5,cnt=0,i;
in>>r>>d;
copi5=cinci=ver(r,5);
copi3=trei=ver(r,3);
copi2=doi=ver(r,2);
d2=cook(d,2);
d3=cook(d,3);
d5=cook(d,5);
for(i=1;i<=r/2;i++)
{
copi5=copi5+cook(i,5)-cook(r-i+1,5);
copi3=copi3+cook(i,3)-cook(r-i+1,3);
copi2=copi2+cook(i,2)-cook(r-i+1,2);
if(trei-copi3>=d3&&doi-copi2>=d2&&cinci-copi5>=d5)
cnt++;
}
if(r%2==0)
out<<cnt*2-1;
else
out<<2*cnt;
return 0;
}