资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
解题思路1
最简单的方法就是暴力算法。对于所有的三位数进行遍历,在遍历的同时比较三位数是否满足关系
提交代码
public class Main {
public static void main(String[] args) {
for(int i = 1;i < 10;i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
int m=i*i*i+j * j*j+k*k*k;
int n= (int) (i*Math.pow(10,2)+j * Math.pow(10,1)+k);
if (m==n) System.out.println(n);
}
}
}
}
}
改进算法
依旧是对这些范围内的数进行遍历,但是先得到数,然后求出每一位,最后进行比较。
提交代码
public class Main {
public static void main(String[] args) {
for (int i=100;i<1000;i++){
int[] a=new int[3];
int m = i;
for (int j = 2; j >=0; j--) {
a[j]=m%10;
m=m/10;
}
int k=(int) (Math.pow(a[0],3)+Math.pow(a[1],3)+Math.pow(a[2],3));
int n= (int) (a[0]*Math.pow(10,2)+a[1]* Math.pow(10,1)+a[2]);
if (k==n) System.out.println(i);
}
}
}