私のソリューションをコーデックフに提出すると、タイムリミットエラーが続きます。私はスキャナーからバッファードリーダーに切り替えましたが、それで修正されませんでした。私はそれが私のアルゴリズムにあると思っていますが、それぞれの5桁の減分をチェックする以外に、どこが不必要なのか分かりません。私はそれを解決する方法を見つけることができるように、私はどこに位置している問題はどこですか?ここでコーデックフのTLEを取得する理由がわかりません
は参照用のリンクです:ここでhttps://www.codechef.com/problems/FCTRL
は私のコードです:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class Factorial {
public static void main(String[] args) throws IOException {
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
//how many numbers follow
int number = Integer.parseInt(keyboard.readLine());
//stores zSum's to output later
int[] answerArray = new int[number];
for(int i = 0; i < number; i++) {
//the number to compute factorial
int n = Integer.parseInt(keyboard.readLine());
// moves number to one ending in 5
n -= n % 5;
//stores number of zeros
int zSum = 0;
for (int j = n; j > 0; j -= 5) {
//if a power of 5, add 1 to zSum
for (int k = 5; k <= j; k *= 5) {
if (j % k == 0) {
zSum ++;
}
}
}
answerArray[i] = zSum;
}
//println all values in array
for (int i = 0; i < number; i++) {
System.out.println(answerArray[i]);
}
}
}
ループで 'System.out.println'を実行するのではなく、' StringBuilder'を使ってみましたか?コードが何度も標準出力をフラッシュしているため、パフォーマンスが大幅に低下する可能性があります。 –