[问题描述]
一个正整数如果等于组成它的各位数字的阶乘之和,则该正整数称为阶乘和数。例如正整数145,1!+4!+5!等于145, 因此145就是一 个阶乘和数。输入-个正整数,计算它的各位数字的阶乘之和,并判断它是否是一 个阶乘和数。注意:输入的正整数,以及组成它的各位数字的阶乘之和都不会超过int类型的表示范围,并且输入的正整数的最高位不为0。
[输入形式]
从控制台输入一个正整数。
[输出形式]
先输出输入的正整数和一个逗号 “,”,并从最高位开始输出组成该正整数的各位数字的阶乘相加形式,然后输出等号”= "和各位数字阶乘之和,最后在下一-行输出字符串"Yes’表示该正整数是阶乘和数,否则输出字符串"No"表示该正整数不是阶乘和数,输出Yes或No后输出回车换行符。所有输出字符之间都没有空格分隔。
代码:
import java.util.Scanner;
public class test6 {
static test6 test;
public static void main(String[] args){
int x,i=0,k=0;
int[] a=new int[10];
String result;
test=new test6();
Scanner scan = new Scanner(System.in);
x=scan.nextInt();
scan.close();
int guocheng=x;
while(guocheng!=0){
a[i]=guocheng%10;
guocheng=guocheng/10;
i++;
k++;
}
result=test.judge(k,a,x);
System.out.print(x+",");
for(int j=k-1;j>=1;j--){
System.out.print(a[j]+"!+");
}
System.out.print(a[0]+"!="+test.shiji(k,a,x)+"n");
System.out.print(result);
}
public String judge(int k,int[] a,int x){
test=new test6();
if(k==1&& test.jiecheng(a[0])==x){
return "Yes";
}
else{
int sum=0;
for(int i=0;i=1;i--){
jieguo=jieguo*i;
}
return jieguo;
}
}



