Cod sursa(job #798093)

Utilizator assa98Andrei Stanciu assa98 Data 15 octombrie 2012 18:53:19
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#define  min(a,b) a<b?a:b

int d,n;
int fact2[5000100],fact3[5000100],fact5[5000100];
void fact()
{
    for(int i=1;i<=n;i++)
    {
            if(i%2==0) fact2[i]=fact2[i/2]+1;
            if(i%3==0) fact3[i]=fact3[i/3]+1;
            if(i%5==0) fact5[i]=fact5[i/5]+1;
    }
}

int a;
int sol;

int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);
    scanf("%d%d",&n,&d);

    fact();

    int x=a,y=0;
    int put2=0,put3=0,put5=0;
    for(int i=1;i<=n;i++)
    {
        x=i;
        y=n-i+1;
        put2=put2+fact2[y]-fact2[x];
        put3=put3+fact3[y]-fact3[x];
        put5=put5+fact5[y]-fact5[x];

        if(d==2)
            sol=sol+(put2 > 0);
        else if(d==3)
            sol=sol+(put3 > 0);
        else if(d==4)
            sol=sol+(put2 > 1);
        else if(d==5)
            sol=sol+(put5 > 0);
        else if (d==6)
            sol=sol+(put2 > 0 && put3 > 0);
    }
    printf("%d",sol);
    return 0;
}