Cod sursa(job #1256224)

Utilizator sebinechitasebi nechita sebinechita Data 5 noiembrie 2014 22:13:36
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");

int cate(int n, int d)
{
    int s=0;
    for(int i=d;i<=n;i*=d)
    {
        s+=(n/d);
    }
    return s;
}

int main()
{
    int n, d, g[6], f[6], i;
    fin>>n>>d;
    int l=0;
    g[2]=cate(n, 2);
    g[3]=cate(n, 3);
    g[5]=cate(n, 5);
    for(i=0;i<=(n-1)/2;i++)
    {
        f[2]=g[2]-cate(i, 2)-cate(n-i, 2);
        f[3]=g[3]-cate(i, 3)-cate(n-i, 3);
        f[5]=g[5]-cate(i, 5)-cate(n-i, 5);
        if(d==2 || d==3 || d==5)
            if(f[d])
                l++;
        if(d==4)
            if(f[2]/2)
                l++;
        if(d==6)
            if(f[2] && f[3])
                l++;
    }
    l*=2;
    if(n%2==0)
    {
        i=n/2;
        f[2]=g[2]-cate(i, 2)-cate(n-i, 2);
        f[3]=g[3]-cate(i, 3)-cate(n-i, 3);
        f[5]=g[5]-cate(i, 5)-cate(n-i, 5);
        if(d==2 || d==3 || d==5)
            if(f[d])
                l++;
        if(d==4)
            if(f[2]/2)
                l++;
        if(d==6)
            if(f[2] && f[3])
                l++;
    }

    fout << l;
}