Cod sursa(job #1969758)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 18 aprilie 2017 17:17:51
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("pascal.in","r");
FILE *g=fopen("pascal.out","w");
int F[3];
int E[3];
int D;
int R;
void desc(int D)
{
    if(D==2){F[0]=E[1]=1;F[1]=2;}
    else if(D==3){F[0]=E[1]=1;F[1]=3;}
    else if(D==4){F[0]=1;E[1]=2;F[1]=2;}
    else if(D==5){F[0]=1;E[1]=1;F[1]=5;}
    else if(D==6){F[0]=2;E[1]=1;E[2]=1;F[1]=2;F[1]=3;}
}
int C(int N,int K)
{
    int R={1<<30};
    for(int i=1;i<=F[0];i++)
    {
        int p1=F[i],a=0,b=0;
        while(p1<=N)
        {
            a+=N/p1;
            p1*=F[i];
        }
        p1=F[i];
        while(p1<=K)
        {
            b+=K/p1;
            p1*=F[i];
        }
        p1=F[i];
        while(p1<=N-K)
        {
            b+=(N-K)/p1;
            p1*=F[i];
        }
        a-=b;a/=E[i];
        R=min(R,a);
    }
    return R;
}
int main()
{
    fscanf(f,"%d %d",&R,&D);
    desc(D);
    int rez=0;
    for(int i=0;i<=R;i++)
    {
        if(C(R,i)>0)
            rez++;
    }
    fprintf(g,"%d",rez);
    fclose(f);
    fclose(g);
    return 0;
}