Cod sursa(job #635553)
Utilizator | Data | 19 noiembrie 2011 13:09:16 | |
---|---|---|---|
Problema | Pascal | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.01 kb |
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int fr,f2,f3,i,j,r,d,n,k=0,ad,d3,d2,ad2,ad3,fd3,fd2;
fstream f("pascal.in",ios::in);
f>>r>>d;
f.close();
if(d!=6)
{
ad=d;
while(r>=ad)
{
fr+=(int)(r/ad);
ad*=d;
}
if(r%2)
for(i=1;i<=r/2;i++)
{
f2=0;
ad=d;
while(i>=ad)
{
f2+=(int)(i/ad);
ad*=d;
}
ad=d;
while(r-i>=ad)
{
f2+=(int)(r-i/ad);
ad*=d;
}
if(fr>f2)
k+=2;
}
else
{
for(i=1;i<r/2;i++)
{
f2=0;
ad=d;
while(i>=ad)
{
f2+=(int)(i/ad);
ad*=d;
}
ad=d;
while(r-i>=ad)
{
f2+=(int)(r-i/ad);
ad*=d;
}
if(fr>f2)
k+=2;
}
i=r/2;
f2=0;
ad=d;
while(i>=ad)
{
f2+=(int)(i/ad);
ad*=d;
}
ad=d;
while(r-i>=ad)
{
f2+=(int)(r-i/ad);
ad*=d;
}
if(fr>f2)
k++;
}
}
if(d==6)
{
d3=3;d2=2;
ad3=d3;
while(r>=ad3)
{
fd3+=(int)(r/ad3);
ad3*=d3;
}
ad2=d2;
while(r>=ad3)
{
fd3+=(int)(r/ad3);
ad3*=d3;
}
if(r%2)
for(i=1;i<=r/2;i++)
{
f2=0;f3=0;
ad3=d3;
while(i>=ad3)
{
f3+=(int)(i/ad3);
ad3*=d3;
}
ad2=d2;
while(i>=ad2)
{
f2+=(int)(i/ad2);
ad2*=d2;
}
ad3=d3;
while(r-i>=ad3)
{
f3+=(int)(r-i/ad3);
ad3*=d3;
}
ad2=d2;
while(r-i>=ad2)
{
f2+=(int)(r-i/ad2);
ad2*=d2;
}
if((fd3>f3)&&(fd2>f2))
k+=2;
}
else
{
for(i=1;i<r/2;i++)
{
f2=0;f3=0;
ad3=d3;
while(i>=ad3)
{
f3+=(int)(i/ad3);
ad3*=d3;
}
ad2=d2;
while(i>=ad2)
{
f2+=(int)(i/ad2);
ad2*=d2;
}
ad3=d3;
while(r-i>=ad3)
{
f3+=(int)(r-i/ad3);
ad3*=d3;
}
ad2=d2;
while(r-i>=ad2)
{
f2+=(int)(r-i/ad2);
ad2*=d2;
}
if((fd3>f3)&&(fd2>f2))
k+=2;
}
i=r/2;
f2=0;f3=0;
ad3=d3;
while(i>=ad3)
{
f3+=(int)(i/ad3);
ad3*=d3;
}
ad2=d2;
while(i>=ad2)
{
f2+=(int)(i/ad2);
ad2*=d2;
}
ad3=d3;
while(r-i>=ad3)
{
f3+=(int)(r-i/ad3);
ad3*=d3;
}
ad2=d2;
while(r-i>=ad2)
{
f2+=(int)(r-i/ad2);
ad2*=d2;
}
if((fd3>f3)&&(fd2>f2))
k++;
}
}
fstream g("pascal.out",ios::out);
g<<k;
g.close();
}