Mai intai trebuie sa te autentifici.

Cod sursa(job #1661356)

Utilizator KOzarmOvidiu Badea KOzarm Data 23 martie 2016 20:19:23
Problema Pascal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <fstream>

using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
struct element
{
    int a,b;
}a,b,c;

int n,i,p,total;
element aparitii(int n)
{
    element a;
    a.a=0;
    a.b=0;
    if(p==2||p==4)
    {
        int putere=2;
        while(putere<=n)
        {
            a.a+=n/putere;
            putere*=2;
        }
    }
    else
    if(p==3)
    {
        int putere=3;
        while(putere<=n)
        {
            a.a+=n/putere;
            putere*=3;
        }
    }
    else
    if(p==6)
    {
        int putere1=2;
        int putere2=3;
        while(putere1<=n)
        {
            a.a+=n/putere1;
            a.b+=n/putere2;
            putere1*=2;
            putere2*=3;
        }
    }
    else
    {
        int putere=5;
        while(putere<=n)
        {
            a.a+=n/putere;
            putere*=5;
        }
    }
    return a;
}

bool compara(element a,element b,element c)
{
    a.a=a.a-b.a-c.a;
    a.b=a.b-b.b-c.b;
    if(p==4)
    {
        if(a.a/2>0)
            return 1;
        else
            return 0;
    }
    else
    if(p==6)
    {
        if(a.a>0&&a.b>0)
            return 1;
        else
            return 0;
    }
    else
        return a.a>0;
}


int main()
{
    fin>>n>>p;
    if(n==0||n==1)
    {
        fout<<0;
        return 0;
    }
    a=aparitii(n);
    for(i=1;i<n/2;i++)
    {
        b=aparitii(n-i);
        c=aparitii(i);
        if(compara(a,b,c))
            total+=2;
    }
    if(n%2==0)
    {
        b=aparitii(n/2+1);
        c=b;
        if(compara(a,b,c))
            total++;
    }
    fout<<total;
    return 0;
}