Pagini recente » Cod sursa (job #2892592) | Cod sursa (job #2548916) | Cod sursa (job #1823253) | Cod sursa (job #2589489) | Cod sursa (job #1205950)
#include <fstream>
using namespace std;
struct P{int x,y,z;};
int pow(int n,int d){
int p=0;
while(n%d==0){
n/=d;
p++;
}
return p;
}
int main(){
ifstream f("pascal.in");
ofstream g("pascal.out");
int r,d,div=0;
f >> r >> d;
P *app_f = new P[r+1];
app_f[0].x=app_f[0].y=app_f[0].z=0;
for(int i=1;i<=r;i++){
if(d==2 || d==4 || d==6)
app_f[i].x=app_f[i-1].x+pow(i,2);
if(d==3 || d==6)
app_f[i].y=app_f[i-1].y+pow(i,3);
if(d==5)
app_f[i].z=app_f[i-1].z+pow(i,5);
}
for(int i=1;i<=r/2;i++){
int two=app_f[r].x-app_f[r-i].x-app_f[i].x;
int three=app_f[r].y-app_f[r-i].y-app_f[i].y;
int five=app_f[r].z-app_f[r-i].z-app_f[i].z;
if((d==2 && two>0)||(d==3 && three>0)||(d==5 && five>0)||(d==4 && two>1)){
if(i==r/2 && r%2==0) div++;
else div+=2;
}
else if(d==6 && two>0 && three>0){
if(i==r/2 && r%2==0) div++;
else div+=2;
}
}
delete[] app_f;
g << div <<"\n";
return 0;
}