问题描述 我们知道,阶乘n!表示n*(n-1)(n-2)…21, 类似的,可以定义多阶乘计算,例如:5!!=531,依次可以有n!..!(k个‘!’,可以简单表示为n(k)!)=n*(n-k)(n-2k)…(直到最后一个数<=0)。 现给定一组数据n、k、m,当m=1时,计算并输出n(1)!+n(2)!+…+n(k)!的值,m=2时计算并输出n(1)!+n(2)!+…+n(k)!的各个位上的数字之和。 输入格式 两行,第一行为n和k,第二行为m。 输出格式 一行,为n(1)!+n(2)!+…+n(k)!的值或n(1)!+n(2)!+…+n(k)!的各个位上的数字之和。 样例输入 5 1 2 样例输出 3
在这里插入代码片 import java.util.Scanner; public class 多阶乘计算 { public static void main(String[]args){ Scanner scanner=new Scanner(System.in); int n,k,m; int i; long sum1=1; long sum2=0; long sum3=0; System.out.println("输入值n,阶数k,和m值:1可求值,2可求和"); n=scanner.nextInt(); k=scanner.nextInt(); m=scanner.nextInt(); i=n; for(int j=1;j<=k;j++){ do{ sum1*=(i-j); i=i-j; }while(i>j); sum1=sum1*n; sum2+=sum1; } if(m==1){ System.out.print(sum2); } else{ while(sum2!=0){ sum3+=sum2%10; sum2=sum2/10; } System.out.print(sum3); } } }