Pagini recente » Cod sursa (job #1846541) | Cod sursa (job #269694) | Cod sursa (job #1422113) | Cod sursa (job #187122) | Cod sursa (job #504753)
Cod sursa(job #504753)
#include<stdio.h>
#define DIM 5000005
#include<string>
FILE*f=fopen("pascal.in","r");
FILE*g=fopen("pascal.out","w");
int i,R,D,x,p,pp,XX,NR,ok,fac2[DIM],fac3[DIM],fac5[DIM],p2,p3,p5;
int F(int I,int p){
int nr = 0;
while ( I % p == 0 ){
I /= p;
++nr;
}
return nr;
}
void init () {
if ( D == 2 ){ p2 = 1; }
if ( D == 3 ){ p3 = 1; }
if ( D == 4 ){ p2 = 2; }
if ( D == 5 ){ p5 = 1; }
if ( D == 6 ){ p2 = 1; p3 = 1; }
for ( int i = 1 ; i <= R + 1 ; ++i ){
fac2[i] = fac2[i-1] + F(i,2);
fac3[i] = fac3[i-1] + F(i,3);
fac5[i] = fac5[i-1] + F(i,5);
}
}
void solve () {
int z = (R + 1)/ 2 ;
for ( i = 1 ; i < z; ++i ){
if ( fac2[R] - fac2[R-i] - fac2[i] >= p2 && fac3[R] - fac3[R-i] - fac3[i] >= p3 && fac5[R] - fac5[R - i] - fac5[i] >= p5 )
++NR;
}
NR *= 2;
if ( !(R % 2) ){
if ( fac2[R] - fac2[R-i] - fac2[i] >= p2 && fac3[R] - fac3[R-i]- fac3[i] >= p3 && fac5[R] - fac5[R-i] - fac5[i] >= p5 )
++NR;
}
}
int main () {
fscanf(f,"%d %d",&R,&D);
init();
solve();
fprintf(g,"%d\n",NR);
fclose(f);
fclose(g);
return 0;
}