计算超阶乘

tech2022-08-07  173

试题 算法提高 计算超阶乘

思路:遍历一遍,写出公式,进行检查,是否可以抹掉一个0,可以则加1。 试题 算法提高 计算超阶乘

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   计算1*(1+k)(1+2k)(1+3k)…(1+n*k-k)的末尾有多少个0,最后一位非0位是多少。 输入格式   输入的第一行包含两个整数n, k。 输出格式   输出两行,每行一个整数,分别表示末尾0的个数和最后一个非0位。 样例输入 15 2 样例输出 0 5 数据规模和约定   1<=k<=10,1<=n<=1000000。

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); int k = s.nextInt(); long sum = 1; int zeros = 0; for (int i = 1; i < n; i++) { sum = sum * (1 + i * k); while (sum % 10 == 0 && sum > 9) { sum = sum / 10; zeros++; } sum = sum % 100000; } System.out.println(zeros); System.out.println(sum % 10); } }

最新回复(0)