Cod sursa(job #2847723)

Utilizator daria_pDaria Popescu daria_p Data 11 februarie 2022 12:21:57
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.19 kb
#include <fstream>

using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int n,i,j,p,d,v[5500005],nr,q[5500005];
int main()
{
    fin >>n>>d;
    if (d==2)
    {
        for(i=2;i<=n;i=i*2)
        {
            for(j=i;j<=n;j=j+i)
            {
                v[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            v[i]=v[i]+v[i-1];
        }
        for(i=1;i<=n-1;i++)
        {
            if(v[n]-v[i]-v[n-i]!=0) nr++;
        }
        fout <<nr;
    }
    if (d==3)
    {
        for(i=3;i<=n;i=i*3)
        {
            for(j=i;j<=n;j=j+i)
            {
                v[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            v[i]=v[i]+v[i-1];
        }
        for(i=1;i<=n-1;i++)
        {
            if(v[n]-v[i]-v[n-i]) nr++;
        }
        fout <<nr;
    }
    if (d==4)
    {
        for(i=2;i<=n;i=i*2)
        {
            for(j=i;j<=n;j=j+i)
            {
                v[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            v[i]=v[i]+v[i-1];
        }
        for(i=1;i<=n-1;i++)
        {
            if(v[n]-v[i]-v[n-i]>=2) nr++;
        }
        fout <<nr;
    }
    if (d==5)
    {
        for(i=5;i<=n;i=i*5)
        {
            for(j=i;j<=n;j=j+i)
            {
                v[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            v[i]=v[i]+v[i-1];
        }
        for(i=1;i<=n-1;i++)
        {
            if(v[n]-v[i]-v[n-i]) nr++;
        }
        fout <<nr;
    }
    if (d==6)
    {
        for(i=2;i<=n;i=i*2)
        {
            for(j=i;j<=n;j=j+i)
            {
                v[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            v[i]=v[i]+v[i-1];
        }

        for(i=3;i<=n;i=i*3)
        {
            for(j=i;j<=n;j=j+i)
            {
                q[j]++;
            }
        }
        for(i=1;i<=n;i++)
        {
            q[i]=q[i]+q[i-1];
        }
        for(i=1;i<=n-1;i++)
        {
            if(q[n]-q[i]-q[n-i]!=0 && v[n]-v[i]-v[n-i]!=0) nr++;
        }
        fout <<nr;
    }
    return 0;
}