Pagini recente » Cod sursa (job #1342287) | Cod sursa (job #1152946) | Cod sursa (job #2184580) | Cod sursa (job #3150214) | Cod sursa (job #1456041)
#include <stdio.h>
int main(){
FILE *fin=fopen("cifre.in","r");
FILE *fout=fopen("cifre.out","w");
int a,b,c,k,nr1=0,nr2=0,cnr2,cnr1,p2=0,p=0,p5=0,i,ci,cf,aux,ok;
fscanf(fin, "%d%d%d%d", &a, &b, &c, &k);
for(i=a;i<=b;i++){
ci=i;
cf=0;
while(ci){
if(ci%10==c)
cf++;
ci/=10;
}
if(cf>=k)
nr2++;
}
nr1=b-a+1;
if(nr2%nr1!=0){
fprintf(fout, "%d.", nr2/nr1);
cnr2=nr2;
cnr1=nr1;
while(cnr1!=0){
aux=cnr2%cnr1;
cnr2=cnr1;
cnr1=aux;
}
if(cnr2!=1){
nr2/=cnr2;
nr1/=cnr2;
}
cnr1=nr1;
while(cnr1%5==0){
cnr1/=5;
p5++;
}
cnr1=nr1;
while(cnr1%2==0){
cnr1/=2;
p2++;
}
if(p5>=p2)
p=p5;
else
p=p2;
nr2=nr2%nr1;
i=0;
while(nr2!=0 && p>0 && i<4){
nr2=nr2*10;
fprintf(fout, "%d", nr2/nr1);
nr2=nr2%nr1;
p--;
i++;
}
cnr2=nr2;
if((nr2*10)%nr1 && i<4){
ok=1;
while(i<4 && ok==1){
fprintf(fout, "%d", (nr2*10)/nr1);
nr2=(nr2*10)%nr1;
if(nr2==0)
ok=0;
i++;
}
}
}
else
fprintf(fout, "%d", nr2/nr1);
fclose(fin);
fclose(fout);
return 0;
}