Cod sursa(job #1204997)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 4 iulie 2014 17:20:14
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int dPr[7], rowPr[7], i, j, r, d, nrDiv;
int main()
{
    f>>r>>d;
    for (i=2; i*i<=d; i++) {
        while (d%i==0) {
            d/=i;
            dPr[i]++;
        }
    }
    if (d!=1)
        dPr[d]++;
    int nr=0;
    for (i=2; i<=5; i++) {
        nr=i;
        while (r >= nr && r%nr==0) {
            rowPr[i]+=r/nr;
            nr*=i;
        }
    }
    for (j=1; j<=r; j++) {
        int tmp=(r-j), nr=0;
        for (i=2; i<=5; i++) {
            nr=i;
            while (tmp >= nr && tmp%nr==0) {
                rowPr[i]-=tmp/nr;
                nr*=i;
            }
        }
        tmp=j;
        for (i=2; i<=5; i++) {
            nr=i;
            while (tmp >= nr && tmp%nr==0) {
                rowPr[i]-=tmp/nr;
                nr*=i;
            }
        }
        int ok=1;
        for (i=1; i<=5; i++)
            if (dPr[i] != 0 && dPr[i] > rowPr[i])
                ok=0;
        if (ok==1)
            nrDiv++;
    }
    g<<nrDiv;
    return 0;
}