Witam serdecznie,
mam taki problem z pewnym zadaniem ze SPOJA(kategoria ŁATWE):
Wejście
Mamy t testów, t < 100000. Każdy test składa się z jednej liczby n < 1 073 741 824.
Wyjście
Dla każdej liczby n wypisać liczbę zer, którymi kończy się liczba n!.
Maksymalny czas wykonania:
1s.
Napisałem dwa programy jeden z użyciem iostreamu, to wyskakuje, że program za wolny:
#include<iostream>
#include <math.h>
using namespace std;
int main ()
{
int suma=0,n;
double liczba;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>liczba;
double l1=log(liczba);
double l2=log(5.0);
double max=floor(l1/l2);
for(int k=1;k<max+1;k++)
{
suma+=floor(liczba/pow(5.0,k));
}
cout<<suma;
suma=0;
}
return 0;
}
a jak zmieniłem na bibliotekę cstdio to niby daje złe wyniki:
#include <math.h>
#include<cstdio>
int main ()
{
int suma=0,n;
float liczba;
scanf("%u",&n);
for(int i=0;i<n;i++)
{
scanf("%f",&liczba);
float l1=log(liczba);
float l2=log(5.0);
float max=floor(l1/l2);
for(int k=1;k<max+1;k++)
{
suma+=floor(liczba/pow(5.0,k));
}
printf("%d\n",suma);
suma=0;
}
Proszę o pomoc, co jest w nich źle i jak to napisać dobrze? Z góry dziękuję za pomoc :)
PS. Wzór na liczbę zer, jakimi kończy się n!: