Cod sursa(job #2703483)

Utilizator stefantagaTaga Stefan stefantaga Data 8 februarie 2021 16:58:00
Problema Pascal Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#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;
}