Cod sursa(job #2457059)

Utilizator cristina-criCristina cristina-cri Data 16 septembrie 2019 15:38:47
Problema Pascal Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.24 kb
#include <cstdio>
using namespace std;

int n;

int prim(int x)
{
    if(x==2 || x==3 || x==5)
        return 1;
    return 0;

}

int suma(int n, int d)
{
    int s=0;
    while(n)
    {
        int r=n/d;
        s+=r;
        n=r;
    }
    return s;
}

int d, sum2[5000001], sum3[5000001], sum5[5000001];

int main()

{

    freopen("pascal.in", "r", stdin);
    freopen("pascal.out", "w", stdout);

    scanf("%d %d", &n, &d);

//    int sus2=suma(n, 2);
//    int sus3=suma(n, 3);
//    int sus5=suma(n, 5);
    int nr=0;
    int sus2;
    int sus3;
    int sus5;

    for(int i=1; i<=n; i++)
    {
        if(!i%2)
            sum2[i]=1+sum2[i/2];
        if(!i%3)
            sum3[i]=1+sum3[i/3];
        if(!i%5)
            sum5[i]=1+sum5[i/5];
    }

    for(int i=1; i<n; i++)
    {
        sus2+=sum2[n-i+1]-sum2[i];
        sus3+=sum3[n-i+1]-sum3[i];
        sus5+=sum5[n-i+1]-sum5[i];

        if(d == 2)
        {
            if(sus2>0)
                nr++;
            continue;
        }
        if(d == 3)
        {
            if(sus3>0)
                nr++;
            continue;
        }
        if(d == 4)
        {
            if(sus2>=2)
                nr++;
            continue;
        }
        if(d == 5)
        {
            if(sus5>0)
                nr++;
            continue;
        }
        if(d == 6)
        {
            if(sus2>0 && sus3>0)
                nr++;
            continue;
        }
    }
//    sus2=cop2;
//    sus3=cop3;
//    sus5=cop5;
    /*if(n%2)
    {
        int i=(n+1)/2;
        sus2-=(suma(i, 2)+suma(n-i, 2));
        sus3-=(suma(i, 3)+suma(n-i, 3));
        sus5-=(suma(i, 5)+suma(n-i, 5));

        if(d == 2)
        {
            if(sus2>0)
                nr++;
        }
        else if(d == 3)
        {
            if(sus3>0)
                nr++;
        }
        else if(d == 4)
        {
            if(sus2>=2)
                nr++;
        }
        else if(d == 5)
        {
            if(sus5>0)
                nr++;
        }
        else if(d == 6)
        {
            if(sus2>0 && sus3>0)
                nr++;
        }
    }*/

    printf("%d", nr);
    return 0;

}