Pagini recente » Cod sursa (job #2101318) | Cod sursa (job #38223) | Cod sursa (job #1014001) | Cod sursa (job #1575392) | Cod sursa (job #2498849)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int n, d, m, t, i, j, k, div2[5000010], div3[5000010], div5[5000010], sol;
int main(){
fin>>n>>d;
if(d==1){
fout<<n+1;
return 0;
}
/// precalculez puterea divizorilor de 2, 3, 5 lui " i! " deoarece d <= 6
for(i=1; i<=n; i++){
if(i%2==0){
div2[i]=div2[i/2]+1;
}
if(i%3==0){
div3[i]=div3[i/3]+1;
}
if(i%5==0){
div5[i]=div5[i/5]+1;
}
}
i=n;
for(j=0; j<=n; j++){
/// i!/((i-j)!*j!)
if(d==2){
if(div2[i]-div2[i-j]-div2[j]>0){
sol++;
}
}
if(d==3){
if(div3[i]-div3[i-j]-div3[j]>0){
sol++;
}
}
if(d==5){
if(div5[i]-div5[i-j]-div5[j]>0){
sol++;
}
}
if(d==4){
if(div2[i]/2-div2[i-j]/2-div2[j]/2>0){
sol++;
}
}
if(d==6){
if( min(div2[i], div3[i]) - min(div2[i-j], div3[i-j]) - min(div2[j], div3[j]) > 0 ){
sol++;
}
}
}
fout<<sol;
}