Cod sursa(job #2878474)

Utilizator Simon2712Simon Slanina Simon2712 Data 26 martie 2022 20:46:09
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
int v2[5000001],v3[5000001],v5[5000001];
int main()
{
    int r,d,i,j,rez=0;
    cin>>r>>d;
    if(d%2==0)
    {
        for(i=2;i<=r;i*=2)
        {
            for(j=i;j<=r;j+=i)
                v2[j]++;
        }
        for(i=1;i<=r;i++)
            v2[i]+=v2[i-1];
    }
    if(d%3==0)
    {
        for(i=3;i<=r;i*=3)
        {
            for(j=i;j<=r;j+=i)
                v3[j]++;
        }
        for(i=1;i<=r;i++)
            v3[i]+=v3[i-1];
    }
    if(d%5==0)
    {
        for(i=5;i<=r;i*=5)
        {
            for(j=i;j<=r;j+=i)
                v5[j]++;
        }
        for(i=5;i<=r;i++)
            v5[i]+=v5[i-1];
    }
    for(i=1;i<r;i++)
    {
        if(d==4)
        {
            if(v2[r]-v2[i]-v2[r-i]>1)
                rez++;
        }
        else
        if((d%2!=0 || v2[r]-v2[i]-v2[r-i]) && (d%3!=0 || v3[r]-v3[i]-v3[r-i]) && (d%5!=0 || v5[r]-v5[i]-v5[r-i]))
            rez++;
    }
    cout<<rez;
    return 0;
}