Cod sursa(job #1379688)

Utilizator MaarcellKurt Godel Maarcell Data 6 martie 2015 18:58:56
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int R,D,cnt[5000010][3],nr[3],c[3];

int ord(int x){
    if (x==2) return 0;
    else if (x==3) return 1;
    else return 2;
}

int main() {
    ifstream fin("pascal.in");
    ofstream fout("pascal.out");
    fin >> R >> D;

    nr[0]=2,nr[1]=3,nr[2]=5;
    int i,j,p,res=0;
    for (i=1; i<=R; i++)
        for (j=0; j<3; j++) {
            p=nr[j];
            while (p<=i) cnt[i][ord(nr[j])]+=i/p,p*=nr[j];
        }

    for (i=0; i<=R; i++) {
        memset(c,0,sizeof(c));
        for (j=0; j<3; j++) c[j]=cnt[R][j]-cnt[i][j]-cnt[R-i][j];
        if (D==2) { if (c[0]>0) res++; }
        else if (D==3) { if (c[1]) res++; }
        else if (D==4) { if (c[0]>1) res++; }
        else if (D==5) { if (c[2]) res++; }
        else if (c[0] && c[1]) res++;
    }

    fout << res << "\n";
    return 0;
}