原题链接:C语言训练-阶乘和数*
解题思路:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复