Cod sursa(job #1784769)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 20 octombrie 2016 14:56:35
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <fstream>

using namespace std;
int r,d,i,p,nr,v[5000005],w[5000005];
int main()
{
    ifstream f("pascal.in");
    ofstream g("pascal.out");
    f>>r>>d;
    if(d==2)
    {
        for(p=2; p<=r; p*=2)
        {
            for(i=p; i<=r; i+=p)
                v[i]++;
        }
        for(i=1; i<=r; i++)
            v[i]+=v[i-1];
        for(i=1; i<r; i++)
        {
            if(v[i]+v[r-i]<v[r]) nr++;
        }
        g<<nr<<'\n';
    }
    else if(d==3)
    {
        for(p=3; p<=r; p*=3)
        {
            for(i=p; i<=r; i+=p)
                v[i]++;
        }
        for(i=1; i<=r; i++)
            v[i]+=v[i-1];
        for(i=1; i<r; i++)
        {
            if(v[i]+v[r-i]<v[r]) nr++;
        }
        g<<nr<<'\n';
    }
    else if(d==5)
    {
        for(p=5; p<=r; p*=5)
        {
            for(i=p; i<=r; i+=p)
                v[i]++;
        }
        for(i=1; i<=r; i++)
            v[i]+=v[i-1];
        for(i=1; i<r; i++)
        {
            if(v[i]+v[r-i]<v[r]) nr++;
        }
        g<<nr<<'\n';
    }
    else
    if(d==4)
    {
        for(p=2; p<=r; p*=2)
        {
            for(i=p; i<=r; i+=p)
                v[i]++;
        }
        for(i=1; i<=r; i++)
            v[i]+=v[i-1];
        for(i=1; i<r; i++)
        {
            if(v[i]+v[r-i]+1<v[r]) nr++;
        }
        g<<nr<<'\n';
    }
    else
    {
        for(p=2; p<=r; p*=2)
        {
            for(i=p; i<=r; i+=p)
                v[i]++;
        }
        for(i=1; i<=r; i++)
            v[i]+=v[i-1];
        //3
        for(p=3; p<=r; p*=3)
        {
            for(i=p; i<=r; i+=p)
                w[i]++;
        }
        for(i=1; i<=r; i++)
            w[i]+=w[i-1];
        for(i=1; i<r; i++)
        {
            if(v[i]+v[r-i]<v[r]&&w[i]+w[r-i]<w[r]) nr++;
        }
        g<<nr<<'\n';
    }
    f.close(); g.close();
    return 0;
}