Cod sursa(job #1622323)

Utilizator darmazDarmaz Andrei Sebastian darmaz Data 1 martie 2016 10:42:02
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream cin("pascal.in");
ofstream cout("pascal.out");
int v[10], z;
void pascal(int x, int f, int g)
{
    int p = 0;
    while(x%f==0)
    {
        p++;
        x = x/f;
    }
    v[f] += p*g;
}
int main()
{
    int n, d;
    cin>>n>>d;
    for(int k=1; k<=(n-1)/2; k++){
        if(d%2==0){
            pascal(n-k+1, 2, 1);
            pascal(k, 2, -1);
        }
        if(d%3==0){
            pascal(n-k+1, 3, 1);
            pascal(k, 3, -1);
        }
        if(d%5==0){
            pascal(n-k+1, 5, 1);
            pascal(k, 5, -1);
        }
        if(d==2 and v[2]>0) z+=2;
        if(d==3 and v[3]>0) z+=2;
        if(d==4 and v[2]>1) z+=2;
        if(d==5 and v[5]>0) z+=2;
        if(d==6 and v[2]>0 and v[3]>0) z += 2;
    }
    if(n%2==0){
        pascal(n-n/2+1, 2, 1);
        pascal(n-n/2+1, 3, 1);
        pascal(n-n/2+1, 5, 1);
        pascal(n/2, 2, -1);
        pascal(n/2, 3, -1);
        pascal(n/2, 5, -1);
        if(d==2 and v[2]>0) z+=1;
        if(d==3 and v[3]>0) z+=1;
        if(d==4 and v[2]>1) z+=1;
        if(d==5 and v[5]>0) z+=1;
        if(d==6 and v[2]>0 and v[3]>0) z += 1;

    }
    cout<<z;
    return 0;
}