Cod sursa(job #337131)

Utilizator freak93Adrian Budau freak93 Data 2 august 2009 17:29:34
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<fstream>

using namespace std;

ifstream f("pascal.in");
ofstream g("pascal.out");

const int maxr=5010010;

int i,j,r,d,k,n,power[maxr],l,power2[maxr],rez;

int main()
{
    f>>r>>d;
    l=r/2;
    if(d%2==0)
    {
        for(i=2;i<=r;i<<=1)
            for(j=i;j<=r;j+=i)
                ++power[j];
    }
    if(d%3==0)
    if(d%2==0)
    {
        for(i=3;i<=r;i*=3)
            for(j=i;j<=r;j+=i)
                ++power2[j];
    }
    else
    {
        for(i=3;i<=r;i*=3)
            for(j=i;j<=r;j+=i)
                ++power[j];
    }
    if(d%5==0)
    {
        for(i=5;i<=r;i*=5)
            for(j=i;j<=r;j+=i)
                ++power[j];
    }
    k=0;
    n=0;
    if(d==2||d==5||d==3)
        for(i=1;i<=r;++i)
        {
            k+=power[r-i+1];
            k-=power[i];
            if(k>0)
                    ++rez;
        }
    if(d==4)
        for(i=1;i<=r;++i)
        {
            k+=power[r-i+1];
            k-=power[i];
            if(k>1)
                    ++rez;
        }
    if(d==6)
        for(i=1;i<=r;++i)
        {
            k+=power[r-i+1];
            k-=power[i];
            n+=power2[r-i+1];
            n-=power2[i];
            if(n>0&&k>0)
                    ++rez;
        }

    g<<rez<<"\n";

    f.close();
    g.close();

    return 0;
}