Mai intai trebuie sa te autentifici.
Cod sursa(job #17892)
| Utilizator | Data | 17 februarie 2007 12:06:39 | |
|---|---|---|---|
| Problema | Pascal | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.83 kb |
#include<fstream.h>
unsigned long ras;
int main()
{ifstream f("pascal.in");
ofstream g("pascal.out");
unsigned long r,val,n1,n2,d,i,l,j,c1,c2;
f>>r>>d;f.close();
if((r==0)||(r==1)) {g<<0<<'\n';g.close();return 0;}
val=0;
if(d==6) d=3;
if(d==4) {for(i=2;i<=r;i=i*2) val=val+r/i;
//c1=val%2;
//val=val/2;
}
else for(i=d;i<=r;i=i*d) val=val+r/i;
if(r%2)
{l=r/2;
for(i=0;i<=l;i++)
{n2=0;n1=i;
if(d==4)
{if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
n1=r-i;
if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
//c2=n2%2;n2=n2/2;
//if(((c1-c2)==0)&&((val-n2)>=1)) ras++;
//else if((val-n2)>=2) ras++;
if((val-n2)>=2) ras++;
}
else
{if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
n1=r-i;
if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
if((val-n2)>0) ras++;
}
}
ras=ras*2;g<<ras<<'\n';g.close();return 0;
}
else
{l=r/2;
for(i=0;i<l;i++)
{n2=0;n1=i;
if(d==4)
{if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
n1=r-i;
if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
//c2=n2%2;n2=n2/2;
//if(((c1-c2)==0)&&((val-n2)>=1)) ras++;
//else if((val-n2)>=2) ras++;
if((val-n2)>=2) ras++;
}
else
{if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
n1=r-i;
if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
if((val-n2)>0) ras++;
}
}
ras=ras*2;n1=l;n2=0;
if(d==4)
{if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
n1=r-l;
if(n1) for(j=2;j<=n1;j=j*2)
n2=n2+n1/j;
//c2=n2%2;n2=n2/2;
//if(((c2-c1)==0)&&((val-n2)>=1)) ras++;
//else if((val-n2)>=2) ras++;
if((val-n2)>=2) ras++;
}
else
{if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
n1=r-l;
if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
if((val-n2)>0) ras++;
}
g<<ras<<'\n';g.close();return 0;
}
}