Cod sursa(job #1768288)
Utilizator | Data | 30 septembrie 2016 17:15:53 | |
---|---|---|---|
Problema | Pascal | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.75 kb |
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r,c,rez,rz;
int main()
{
fin>>r>>c;
if (c==1)
fout<<r;
else
{
int n1=r;
int p=1;
if (c%2==0)
{
while (n1/pow(2,p)>=1)
{
rz=rz+n1/pow(2,p);
p++;
}
}
for (int i=0; i<=r; i++)
{
int n1=r,n2=r-i,n3=i;
if (c==6 || c==2 || c==4)
{
int p;
int rz2=0;
p=1;
while (n2/pow(2,p)>=1)
{
rz2=rz2+(int)(n2/pow(2,p));
p++;
}
p=1;
if (n3!=0)
while (n3/pow(2,p)>=1)
{
rz2=rz2+n3/pow(2,p);
p++;
}
if (c==2 && rz>rz2)
rez++;
if (c==4 && rz-rz2>1)
rez++;
if (c==6 && rz>rz2)
{
n1=r,n2=r-i,n3=i;
p=1;
rz=0;
while (n1/pow(3,p)>=1)
{
rz=rz+n1/pow(3,p);
p++;
}
rz2=0;
p=1;
while (n2/pow(3,p)>=1)
{
rz2=rz2+(int)(n2/pow(3,p));
p++;
}
p=1;
if (n3!=0)
while (n3/pow(3,p)>=1)
{
rz2=rz2+n3/pow(3,p);
p++;
}
if (rz>rz2)
rez++;
}
}
else
{
int p=1;
int rz=0;
while (n1/pow(c,p)>=1)
{
rz=rz+n1/pow(c,p);
p++;
}
int rz2=0;
p=1;
while (n2/pow(c,p)>=1)
{
rz2=rz2+(int)(n2/pow(c,p));
p++;
}
p=1;
if (n3!=0)
while (n3/pow(c,p)>=1)
{
rz2=rz2+n3/pow(c,p);
p++;
}
if (rz>rz2)
rez++;
}
}
}
fout<<rez;
return 0;
}