解题思路:


abcde分别代表个十百千万
注意事项:

如何输出排序?原有数组处理后比较,再输出
参考代码:

public class m {
public static void main(String args[]) {
	int Ar[]=new int[10];
	int ar[]=new int[10];
	int n=0;
	for (int a = 0; a < 10; a++) {
		int ja = 0;
		if (a != 0) {
			ja++;
			for (int i = 1; i <= a; i++) {
				ja *= i;
			}
		}
		for (int b = 0; b < 10; b++) {
			int jb = 0;
			if (a != 0 || b != 0) {
				jb++;
				for (int i = 1; i <= b; i++) {
					jb *= i;
				}
			}
			for (int c = 0; c < 10; c++) {
				int jc = 0;
				if (a != 0 || b != 0 || c != 0) {
					jc++;
					for (int i = 1; i <= c; i++) {
						jc *= i;
					}
				}
				for (int d = 0; d < 10; d++) {
					int jd = 0;
					if (a != 0 || b != 0 || c != 0 || d != 0) {
						jd++;
						for (int i = 1; i <= d; i++) {
							jd *= i;
						}
					}
					for (int e = 0; e < 10; e++) {
						int je = 1;
						for (int i = 1; i <= e; i++) {
							je *= i;
						}
						int jie = ja + jb + jc + jd + je;
						if (jie == (e + d * 10 + c * 100 + b * 1000 + a * 10000) && jie > 0) {			
							ar[n]=jie;
							if(ja==0)jie*=10;
							if(jb==0)jie*=10;
							if(jc==0)jie*=10;
							if(jd==0)jie*=10;
							Ar[n]=jie;
							n++;
						}
					}
				}
			}
		}
	}
	for(int i=0;i<10;i++) {
		for(int ii=i;ii<10;ii++) {
			if(Ar[i]>Ar[ii]) {
				int ff=Ar[ii];
				Ar[ii]=Ar[i];
				Ar[i]=ff;
				int f=ar[ii];
				ar[ii]=ar[i];
				ar[i]=f;
	            	}
		}
	}
	for(int i=0;i<10;i++) {
		if(ar[i]!=0)
			System.out.print(ar[i]+" ");
	}
}
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论