Pagini recente » Cod sursa (job #2415349) | Cod sursa (job #2750120) | Cod sursa (job #1690702) | Cod sursa (job #3216619) | Cod sursa (job #1725043)
#include<bits/stdc++.h>
using namespace std;
int D[2][2500100];
int f(int n,int p,bool t){
if(D[t][n]) return D[t][n];
int rs = 0,k = p;
while(p <= n) rs+=n/p,p*=k;
D[t][n] = rs;
return rs;
}
int main(){
ifstream cin("pascal.in");
ofstream cout("pascal.out");
int N,D,rs = 0;
cin>>N>>D;
if(D == 6){
int d1n = f(N,2,0),d2n = f(N,3,1);
for(int d1,d2,i = 1;i<N;i++){
d1 = f(N-i,2,0)+f(i,2,0);
d2 = f(N-i,3,1)+f(i,3,1);
if(min(d1n-d1,d2n-d2) >= 1) rs++;
}
}else{
bool p = D==4;
if(p) D = 2;
int dn = f(N,D,0);
for(int d,i=1;i<N;i++){
d = f(N-i,D,0) + f(i,D,0);
rs+=((p && dn-d >= 2) || (!p && dn-d >= 1) ? 1 : 0);
}
}
cout << rs << '\n';
return 0;
}