Cod sursa(job #2111167)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 21 ianuarie 2018 17:58:22
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
#define VAL 5000005

using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

int R, D, i, j, P2[VAL];
int P3[VAL], P5[VAL], ANS;
int A, B, C;

int main()
{
    fin >> R >> D;
    if (R<=1)
    {
        fout << 0 << '\n';
        return 0;
    }
    for (i=1; i<=R; i++)
    {
        if (i % 2==0)
          P2[i]=P2[i / 2]+1;
        if (i % 3==0)
          P3[i]=P3[i / 3]+1;
        if (i % 5==0)
          P5[i]=P5[i / 5]+1;
     //   fout << i << " " << P2[i] << " " << P3[i] << " " << P5[i] << '\n';
    }
    for (i=1; i<=R; i++)
    {
        P2[i]+=P2[i-1];
        P3[i]+=P3[i-1];
        P5[i]+=P5[i-1];
    }
    for (i=1; i<R; i++)
    {
        A=P2[R]-P2[i]-P2[R-i];
        B=P3[R]-P3[i]-P3[R-i];
        C=P5[R]-P5[i]-P5[R-i];
        if (D==2 && A>0)
        {
            ANS++;
            continue;
        }
        if (D==3 && B>0)
        {
            ANS++;
            continue;
        }
        if (D==4 && A>1)
        {
            ANS++;
            continue;
        }
        if (D==5 && C>0)
        {
            ANS++;
            continue;
        }
        if (D==6 && A>0 && B>0)
        {
            ANS++;
            continue;
        }
    }
    fout << ANS << '\n';
    fin.close();
    fout.close();
    return 0;
}