Pagini recente » Cod sursa (job #1656432) | Cod sursa (job #1183121) | Cod sursa (job #1183143) | Cod sursa (job #2826938) | Cod sursa (job #2098609)
#include<fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int N, D, i, sol, M;
struct desc{
int doi, trei, cinci;
desc(){
this->doi = 0;
this->trei = 0;
this->cinci = 0;
}
} curr, ant;
inline int P( int x, int k ){
int r = 0;
while( x % k == 0 ){
x /= k;
r++;
}
return r;
}
inline int vf( desc A ){
if( D == 2 && A.doi > 0 )
return 1;
if( D == 3 && A.trei > 0 )
return 1;
if( D == 4 && A.doi > 1 )
return 1;
if( D == 5 && A.cinci > 0 )
return 1;
if( D == 6 && A.doi > 0 && A.trei > 0 )
return 1;
return 0;
}
int main(){
fin >> N >> D;
M = (N - 1) / 2;
for( i = 1; i <= M; i++ ){
curr.doi = ant.doi + P( N - i + 1, 2 ) - P( i, 2 );
curr.trei = ant.trei + P( N - i + 1, 3 ) - P( i, 3 );
curr.cinci = ant.cinci + P( N - i + 1, 5 ) - P( i, 5 );
sol += vf( curr );
ant = curr;
}
sol *= 2;
if( N % 2 == 0 ){
i++;
curr.doi = ant.doi + P( N - i + 1, 2 ) - P( i, 2 );
curr.trei = ant.trei + P( N - i + 1, 3 ) - P( i, 3 );
curr.cinci = ant.cinci + P( N - i + 1, 5 ) - P( i, 5 );
sol += vf( curr );
}
fout << sol << "\n";
return 0;
}