Cod sursa(job #1785490)

Utilizator tanasaradutanasaradu tanasaradu Data 21 octombrie 2016 13:44:05
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int n,d;
void Citire()
{
    fin>>n>>d;
}
int Patru(int n,int d)
{
    int k,s=0,x,nrdiv=0;
    for(k=1;k<=n;k++)
    {
        x=n-k+1;
        while(x%d==0)
        {
            s++;
            x/=d;
        }
        x=k;
        while(x%d==0)
        {
            s--;
            x/=d;
        }
        if(s>=2)nrdiv++;
    }
    return nrdiv;
}
int Sase(int n,int d)
{
     int k,s=0,x,s1=0,nrdiv=0;
    for(k=1;k<=n;k++)
    {
        x=n-k+1;
        while(x%2==0)
        {
            s++;
            x/=2;
        }
        x=n-k+1;
        while(x%3==0)
        {
            s1++;
            x/=3;
        }
        x=k;
        while(x%2==0)
        {
            s--;
            x/=2;
        }
        while(x%3==0)
        {
            s1--;
            x/=3;
        }
        if(s>=1 and s1>=1)nrdiv++;
    }
    return nrdiv;
}
int Pascal(int n,int d)
{
    int k,s=0,x,nrdiv=0;
    for(k=1;k<=n;k++)
    {
        x=n-k+1;
        while(x%d==0)
        {
            s++;
            x/=d;
        }
        x=k;
        while(x%d==0)
        {
            s--;
            x/=d;
        }
        if(s>0)nrdiv++;
    }
    return nrdiv;
}
int main()
{
    Citire();
    if(d==4)
        fout<<Patru(n,d)<<"\n";
    else if(d==6)
        fout<<Sase(n,d)<<"\n";
    else fout<<Pascal(n,d)<<"\n";
    return 0;
}