問題描述
計算: 1*(1+k)*(1+2*k)*(1+3*k)*...*(1+n*k-k)
的末尾有多少個0,最後一位非0位是多少。
輸入格式
輸入的第一行包含兩個整數n, k。
輸出格式
輸出兩行,每行一個整數,分別表示末尾0的個數和最後一個非0位。
樣例輸入
15 2
樣例輸出
0
5
思路:規律的話的題目已經給的很清楚了,就是要考慮數大取餘的情況下,因爲太小則不能通過測試9。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int k = scanner.nextInt();
int zero = 0;
long ans = 1;
for (int i = 1; i < n; i++) {
ans *= (1 + i * k); // 階乘公式
while (ans % 10 == 0 && ans > 9) { // 判斷是否是兩位數
ans /= 10; // 每次計算出來的數,將最後的0都抹掉
zero++;
}
ans = ans % 100000; // 取餘的時候應該取大點,防止進位時出現差錯
}
System.out.println(zero); // 輸出0的個數
System.out.println(ans % 10); // 輸出非0的最後數
}
}