自然数の階乗の終わりに0を計算するという標準的な問題を解決しようとしています。私のコードは正常に動作しますが、オンライン ジャッジで「Time Limit Exceeded」エラーが発生します。コードを最適化する方法についてここで質問することにしました。
#include <iostream>
using namespace std;
int count (int n)
{
int result = 0;
for (unsigned int i = 5; i <= n; i += 5)
{
int temp = i;
while (!(temp % 5))
{
++result;
temp /= 5;
}
}
return result;
}
int main()
{
int N;
cin >> N;
cin.get();
for (unsigned int i = 0; i < N; ++i)
{
int n;
cin >> n;
cin.get();
cout << count (n) << endl;
}
return 0;
}
前もって感謝します。