Cod sursa(job #2089911)
Utilizator | Data | 17 decembrie 2017 12:43:20 | |
---|---|---|---|
Problema | Pascal | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.24 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
int r,d,cnt;
int legendre(int n, int p)
{
int s=0;
while(n/p>0)
{
s+=n/p;
p*=p;
}
return s;
}
int main()
{
in>>r>>d;
if(d==2 || d==3 || d==5 || d==4)
{
if(d==4)
d=2;
for(int i = 1;i<=r/2;i++)
{
if(legendre(r,d)-legendre(r-i,d)-legendre(i,d)>0)
{
if(i==r/2)
{
if(r%2==0)
cnt++;
else
cnt+=2;
}
else
cnt+=2;
}
}
}
else
{
for(int i = 1;i<=r/2;i++)
{
if(legendre(r,2)-legendre(r-i,2)-legendre(i,2)>0 && legendre(r,3)-legendre(r-i,3)-legendre(i,3)>0)
{
if(i==r/2)
{
if(r%2==0)
cnt++;
else
cnt+=2;
}
else
cnt+=2;
}
}
}
out<<cnt;
return 0;
}