本文主要是介绍题目 1155: C语言训练-阶乘和数*,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。
例如,145=1!+4!+5!,则145是一个三位阶乘和数。
请问:共有多少个阶乘和数?(不会超过十万)
代码:
package lanqiao;import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) {int n=0;//用来计入有多少个数Set<String> set = new TreeSet<String>();for(int i=1;i<=100000;i++) {int sum=1,sum1=0;String s = String.valueOf(i);//将数转换成字符串char c[] = s.toCharArray();int a[]=new int[c.length];//数的每一项存入数组,求阶乘for(int j=0;j<c.length;j++) {a[j]=c[j]-'0';for(int k=1;k<=a[j];k++) {sum*=k;}sum1+=sum;sum=1;}if(sum1==i) {set.add(Integer.toString(i));n++;}}//字典排序String[] strArr = (String[]) set.toArray(new String[set.size()]);for(int i=0;i<n;i++) {System.out.print(strArr[i]+" ");}}
}
这篇关于题目 1155: C语言训练-阶乘和数*的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!