Cod sursa(job #1256319)

Utilizator sebinechitasebi nechita sebinechita Data 6 noiembrie 2014 08:14:11
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.08 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/i);
    }
    return s;
}

int main()
{
    int n, d, g[6], f[6], i, t;
    fin>>n>>d;
    int l=0;
    g[2]=0;
    g[3]=0;
    g[5]=0;
    for(i=1;i<=(n-1)/2;i++)
    {
        t=n-i+1;
        while(t%2==0)
        {
            g[2]++;
            t/=2;
        }
        while(t%3==0)
        {
            g[3]++;
            t/=3;
        }
        while(t%5==0)
        {
            g[5]++;
            t/=5;
        }

        t=i;
        while(t%2==0)
        {
            g[2]--;
            t/=2;
        }
        while(t%3==0)
        {
            g[3]--;
            t/=3;
        }
        while(t%5==0)
        {
            g[5]--;
            t/=5;
        }
        if(d==2 || d==3 || d==5)
        {
            if(g[d])
                l++;
        }
        if(d==4)
        {
            if(g[2]/2)
                l++;
        }
        if(d==6)
        {
            if(g[2] && g[3])
                l++;
        }
    }
    l*=2;
    if(n%2==0)
    {
        i=n/2;
        t=n-i+1;
        while(t%2==0)
        {
            g[2]++;
            t/=2;
        }
        while(t%3==0)
        {
            g[3]++;
            t/=3;
        }
        while(t%5==0)
        {
            g[5]++;
            t/=5;
        }

        t=i;
        while(t%2==0)
        {
            g[2]--;
            t/=2;
        }
        while(t%3==0)
        {
            g[3]--;
            t/=3;
        }
        while(t%5==0)
        {
            g[5]--;
            t/=5;
        }
        if(d==2 || d==3 || d==5)
        {
            if(g[d])
                l++;
        }
        if(d==4)
        {
            if(g[2]/2)
                l++;
        }
        if(d==6)
        {
            if(g[2] && g[3])
                l++;
        }
    }
    fout << l;
}