Pagini recente » Cod sursa (job #1510748) | Cod sursa (job #510721) | Cod sursa (job #1343681) | Cod sursa (job #1080199) | Cod sursa (job #3167604)
#include <bits/stdc++.h>
#define int long long
using namespace std;
using ll = long long;
char leg2[2500005], leg3[2500005], leg5[2500005]; // legx[i] exp lui x la i!
int32_t main()
{
ifstream cin("pascal.in");
ofstream cout("pascal.out");
int r, d;
cin>>r>>d;
for(int i=1; i<=r; i++)
{
ll sus=2;
while(sus <= i)
{
leg2[i]+=i/sus;
sus*=sus;
}
sus=3;
while(sus <= i)
{
leg3[i]+=i/sus;
sus*=sus;
}
sus=5;
while(sus <= i)
{
leg5[i]+=i/sus;
sus*=sus;
}
}
int ans=0;
for(int i=0; i<=(r)/2; i++)
{
// r!/((r-i)!*i!)
// de la r-i+1 la r
// te uiti la imp cu 2 3 si 5
// formula lui legandre
int e2=leg2[r]-leg2[r-i]-leg2[i];
int e3=leg3[r]-leg3[r-i]-leg3[i];
int e5=leg5[r]-leg5[r-i]-leg5[i];
//cout<<r<<" "<<i<<" "<<e2<<" "<<e3<<" "<<e5<<'\n';
if(i == r/2 && r%2 == 0)
ans*=2;
if(d == 2 && e2 > 0)
ans++;
if(d == 3 && e3 > 0)
ans++;
if(d == 4 && e2 > 1)
ans++;
if(d == 5 && e5 > 0)
ans++;
if(d == 6 && e2 > 0 && e3 > 0)
ans++;
}
if(r%2 == 1)
ans*=2;
cout<<ans;
return 0;
}