蓝桥杯练习系统 算法训练: ALGO-231 多阶乘计算 java版

    技术2022-07-10  164

    多阶乘计算

    问题描述   我们知道,阶乘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); } } }

    萌新小白(真),欢迎大家讨论我的错误~ 共同学习,谢谢大家(^ v ^)

    Processed: 0.039, SQL: 9