Cod sursa(job #229641)

Utilizator ooctavTuchila Octavian ooctav Data 10 decembrie 2008 21:49:16
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
/*Se da un numar intreg P. Sa se gaseasca cel mai mic numar natural strict pozitiv N 
pentru care N! are exact P cifre de 0 la sfarsit.*/

/*Se da un numar intreg P. Sa se gaseasca cel mai mic numar natural strict pozitiv N 
pentru care N! are exact P cifre de 0 la sfarsit.*/

#include<stdio.h>
#define N 400000025
int main()   
{   
    unsigned int p,n,d,t,i,a=1;
	FILE *f1,*f2;   
    f1=fopen("fact.in","r");   
    f2=fopen("fact.out","w");   
    fscanf(f1,"%d",&p);   
    i=0;  
    t=0;   
    if(p==0){   
		fprintf(f2,"%d",1);   
        return 0;   
	}
	if(p<=25000000)
	{
		for(i=5;i<=100000090;i=i+5) 
		{     
			d=1; 
			n=i/5;   
			while(n%5==0)   
			{
				d=d+1;
				n=n/5;
			}
			t=t+d;
			if(t>=p)
				break;
		}
	}
	else if(p>25000000 && p<=50000000)
		{
			t=25000000;
			for(i=100000010;i<=200000100;i=i+5) 
			{
				d=1; 
				n=i/5;   
				while(n%5==0)   
				{
					d=d+1;
					n=n/5;
				}
				t=t+d;
				if(t>=p)
					break;
			}
		}
	else if(p>50000000 && p<=75000000)
		{
			t=50000000;
			for(i=200000015;i<=300000455;i=i+5) 
			{
				d=1; 
				n=i/5;   
				while(n%5==0)   
				{
					d=d+1;
					n=n/5;
				}
				t=t+d;
				if(t>=p)
					break;
			}
		}
	else if(p>75000000 && p<=100000000)
		{
			t=75000000;
			for(i=300000015;i<=400000135;i=i+5) 
			{
				d=1; 
				n=i/5;   
				while(n%5==0)   
				{
					d=d+1;
					n=n/5;
				}
				t=t+d;
				if(t>=p)
					break;
			}
		}
	if(t>p)	fprintf(f2,"%d",0);
    else 	fprintf(f2,"%d",i);   
    fclose(f1);   
    fclose(f2);   
    return 0;   
}