Cod sursa(job #1206132)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 8 iulie 2014 22:29:56
Problema Pascal Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.95 kb
#include<stdio.h>
int cateFact1[5000001],cateFact2[5000001];
int main(){
    FILE *fin,*fout;
    fin=fopen("pascal.in","r");
    fout=fopen("pascal.out","w");
    int r,d;
    fscanf(fin,"%d%d",&r,&d);
    int cont=0,nr=2,j,i;
    int sol=0,ok,c;
    for(i=1;i<=r;i++)
    {
        cateFact1[i]=cateFact1[i-1];
        cateFact2[i]=cateFact2[i-1];
        c=i;
        switch(d){
            case 2:
                while((c&1)==0){
                    cateFact1[i]++;
                    c=c>>1;
                }
                break;
            case 3:
                while(c%3==0){
                    cateFact1[i]++;
                    c=c/3;
                }
                break;
            case 4:
                while((c&1)==0){
                    cateFact1[i]++;
                    c=c>>1;
                }
                break;
            case 5:
                while(c%5==0){
                    cateFact1[i]++;
                    c=c/5;
                }
                break;
            case 6:
                while((c&1)==0){
                    cateFact1[i]++;
                    c=c>>1;
                }
                while(c%3==0){
                    cateFact2[i]++;
                    c=c/3;
                }
                break;
        }
    }
    for(i=0;i<=r/2;i++){
        ok=1;
        if(d==2&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
            ok=0;
        if(d==3&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
            ok=0;
        if(d==4&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<2)
            ok=0;
        if(d==5&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
            ok=0;
        if(d==6&&(cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1||cateFact2[r]-cateFact2[r-i]-cateFact2[i]<1))
            ok=0;
        if(ok)
            sol++;
    }
    if(ok&&r%2==0)
        sol--;
    else
        ok=0;
    fprintf(fout,"%d",sol*2+ok);
    return 0;
}