Cod sursa(job #1522693)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 11 noiembrie 2015 21:56:23
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.94 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("pascal.in");
ofstream out("pascal.out");

int n,d;

int nr_fact(int n,int k)
{
    int nr = 0;
    for(int i=k;i<=n;i*=k)
        nr+=n/i;
    return nr;
}

int main()
{
    in>>n>>d;
    in.close();
    long long int nr = 0;
    int fact1,fact2,fact;
    for(int i = 0;i<=n/2;i++)
        {
            if((d==2) || (d==3) || (d==5))
            {
                fact1 = nr_fact(n,d) - (nr_fact(n-i,d) + nr_fact(i,d));
                if(fact1 > 0)
                {
                    if(n%2==1)
                    nr+=2;
                    else
                    {
                        if(i==n/2)
                        nr+=1;
                    else
                        nr+=2;
                    }
                }
            }
            else
                if(d==4)
            {
                 fact1 = nr_fact(n,2) - (nr_fact(n-i,2) + nr_fact(i,2));
                if(fact1 >= 2)
                {
                    if(n%2==1)
                    nr+=2;
                    else
                    {
                        if(i==n/2)
                        nr+=1;
                    else
                        nr+=2;
                    }
                }
            }
            else
                if(d==6)
            {
                 fact1 = nr_fact(n,2) - (nr_fact(n-i,2) + nr_fact(i,2));
                 fact2 = nr_fact(n,3) - (nr_fact(n-i,3) + nr_fact(i,3));
                 fact = min(fact1,fact2);
                 if(fact >= 1)
                {
                    if(n%2==1)
                    nr+=2;
                    else
                    {
                        if(i==n/2)
                        nr+=1;
                    else
                        nr+=2;
                    }
                }
            }
        }
    out<<nr<<'\n';
    out.close();
    return 0;
}