Cod sursa(job #476072)

Utilizator CS-meStanca Marian Ciprian CS-me Data 9 august 2010 17:57:06
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>
#define INF "pascal.in"
#define OUF "pascal.out"
#define NMAX 5000002
using namespace std;

short a[NMAX],b[NMAX],c[NMAX];
int main()
{
    FILE *in,*out;
    in=fopen(INF,"r");
    out=fopen(OUF,"w");
    int n,d,i,j,aux,sol=0;
    short aa,bb,cc;
    fscanf(in,"%d%d",&n,&d);

    a[0]=b[0]=c[0]=0;
    for(i=1;i<=n;++i)
    {
                     aux=i;
                     aa=bb=cc=0;
                     while(aux%2==0){ ++aa;aux/=2;}
                     while(aux%3==0){ ++bb;aux/=3;}
                     while(aux%5==0){ ++cc;aux/=5;}
                     a[i]=a[i-1]+aa;
                     b[i]=b[i-1]+bb;
                     c[i]=c[i-1]+cc;
    }

    sol=0;
    for(i=1;i<=n;++i)
    {

                     aa=a[n]-a[i]-a[n-i];
                     bb=b[n]-b[i]-b[n-i];
                     cc=c[n]-c[i]-c[n-i];
                     switch(d)
                     {
                              case 2: if(aa) ++sol;break;
                              case 3: if(bb) ++sol;break;
                              case 4: if(aa>1) ++sol;break;
                              case 5: if(cc) ++sol;break;
                              case 6: if(aa&&bb) ++sol;break;
                     }
    }

    fprintf(out,"%d",sol);
    fclose(in);fclose(out);
    return 0;
}