奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。
结果为:69
代码如下:
import java.util.Scanner;
public class Main {
static int pingfang = 0;
static int lifang = 0;
static int[] arr = new int[10];
static int[] brr = new int[10];
public static void main(String[] args) {
/* i=47,(平方为4位数)+(立方为6位数)=10位数 (0~9)
* i=99,(平方为4位数)+(立方为6位数)=10位数 (0~9)
* i=100,(平方为5位数)+(立方为7位数)=12位数 (不符合题意)
* */
for(int i = 47; i < 100; i++){
/* 计算某个数的平方与立方 */
pingfang = i*i; //4位数
lifang = i*i*i; //6位数
/* 平方的4位数 */
arr[0] = pingfang%10;
arr[1] = pingfang/10%10;
arr[2] = pingfang/100%10;
arr[3] = pingfang/1000%10;
/* 立方的6位数 */
arr[4] = lifang%10;
arr[5] = lifang/10%10;
arr[6] = lifang/100%10;
arr[7] = lifang/1000%10;
arr[8] = lifang/10000%10;
arr[9] = lifang/100000%10;
/* 在brr数组 存储 arr数组数字出现的次数 */
for(int j = 0; j < 10; j++){
if (arr[j]==0){
brr[arr[j]]++;
}else if (arr[j]==1){
brr[arr[j]]++;
}else if (arr[j]==2){
brr[arr[j]]++;
}else if (arr[j]==3){
brr[arr[j]]++;
}else if (arr[j]==4){
brr[arr[j]]++;
}else if (arr[j]==5){
brr[arr[j]]++;
}else if (arr[j]==6){
brr[arr[j]]++;
}else if (arr[j]==7){
brr[arr[j]]++;
}else if (arr[j]==8){
brr[arr[j]]++;
}else if (arr[j]==9){
brr[arr[j]]++;
}
}
/* 判断数的平方和立方正好把0~9的10个数字每个用且只用了一次 */
for(int j=0;j<10;j++){
/* 如果数字0~9中,没有出现则退出循环 */
if(brr[j]==0){
break;
}
/* 如果到了数字9还是出现1次,则输出结果 */
if(brr[j]==1 && j==9){
System.out.println(i);
/* 结果为69,69^2=4761,69^3=328509 */
}
}
/* 每次初始化 */
for(int k=0;k<10;k++){
brr[k]=0;
}
}
}
}