Pagini recente » Cod sursa (job #2975970) | Cod sursa (job #160795) | Cod sursa (job #1833978) | Cod sursa (job #1253233) | Cod sursa (job #2703483)
#include <bits/stdc++.h>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int n,k,din[1005][1005],i,j,nr,d,numar,nrfin,ok,sum,t;
long long putere[2][23];
vector <pair <int,int>> v;
int main()
{
f>>n>>k;
d=2;
while (k!=1)
{
numar=0;
while (k%d==0)
{
k=k/d;
numar++;
}
if (numar!=0)
{
v.push_back({d,numar});
}
d++;
}
for (j=0;j<v.size();j++)
{
putere[j][0]=1;
for (k=1;k<=22;k++)
{
putere[j][k]=putere[j][k-1]*v[j].first;
}
}
for (i=1;i<=n;i++)
{
ok=0;
for (j=0;j<v.size();j++)
{
sum=0;
for (t=1;putere[j][t]<=n;t++)
{
sum=sum+n/putere[j][t];
}
for (t=1;putere[j][t]<=i;t++)
{
sum=sum-i/putere[j][t];
}
for (t=1;putere[j][t]<=n-i;t++)
{
sum=sum-(n-i)/putere[j][t];
}
if (sum>=v[j].second)
{
ok++;
}
}
if (ok==v.size())
{
nrfin++;
}
}
g<<nrfin;
return 0;
}