Cod sursa(job #780080)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 19 august 2012 21:16:18
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <stdio.h>

FILE *f,*g;
int ss,nr1,k,rs,ii,n,p,d,i,factor,j,a[10001],v[10001],s[1001],r,c1,c2,c3,c4,c5,c6;
int main ()
{
  f=fopen("pascal.in","r");
  g=fopen("pascal.out","w");
fscanf(f,"%d",&r);
fscanf(f,"%d",&d);
for (j=1;j<=r-1;j++){

for(k=2;k<=10000;k++)v[k]=0;
//pas1
for (i=r;i>r-j;i--){
p=i;
factor=2;
while (p%2==0){
v[2]++;
p=p/2;
}
factor=3;
while (p!=1)
{
    while (p%factor==0){
    v[factor]++;
    p=p/factor;
    }
factor=factor+2;
}
}

for(k=2;k<=10000;k++)a[k]=0;
//pas2
for (i=1;i<=j;i++){
p=i;
factor=2;
while (p%2==0){
a[2]++;
p=p/2;
}
factor=3;
while (p!=1)
{
    while (p%factor==0){
    a[factor]++;
    p=p/factor;
    }
factor=factor+2;
}
}
//dif
for(k=1;k<=10000;k++)
{
 if (a[k]!=0)v[k]=v[k]-a[k];


}
//inmultire

for(k=1;k<=1000;k++)s[k]=0;
s[1]=1;
n=1;
for(k=1;k<=10000;k++)
while (v[k]!=0){
rs=0;
for (ii=1;ii<=n;ii++)
{
s[ii]=s[ii]*k;
s[ii]=s[ii]+rs;
rs=s[ii]/10;
s[ii]=s[ii]%10;
if (rs!=0 && s[ii+1]==0)n++;
}
v[k]--;

}
//rez
if (d==1) c1++;
if (d==2) if (s[1]%2==0)c2++;
 if (d==3) {ss=0;for(k=1;k<=1000;k++) ss=ss+s[k];
 if (ss%3==0)c3++;}
 if (d==4) {nr1=s[2]*10+s[1];if (nr1%4==0)c4++;}
 if (d==5) if (s[1]%5==0)c5++;
if (d==6) {ss=0;for(k=1;k<=1000;k++) ss=ss+s[k];
if(ss%3==0 && s[1]%2==0)c6++;}
}
if (d==1) fprintf(g,"%d",c1+2);
if (d==2) fprintf(g,"%d",c2);
if (d==3) fprintf(g,"%d",c3);
if (d==4) fprintf(g,"%d",c4);
if (d==5) fprintf(g,"%d",c5);
if (d==6) fprintf(g,"%d",c6);

fclose(g);
return 0;

}