【数据结构】奇妙的数字

题目

小明发现一个奇妙的数字。它的平方立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?

要求

输出该数字,不要输出任何多余的内容。

分析过程

要求:平方的值+立方的值=含有0~9的数字

  1. 首先,我们应该思考如果实现,在计算平方的值后,再计算立方的值,

  2. 然后把两这个的值拼接起来,注意是拼接,不是相加,可以使用String类型拼接

  3. 拼接完后,使用char类型进行排序

  4. 进行比较(和0~9字符串比较)

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package lab;

import java.util.Arrays;

public class 奇妙的数字01 {

public static void main(String[] args) {
// TODO Auto-generated method stub
dfs();
}

public static void dfs() {
//比较字符串
String str = "0123456789";

//便利数值,尽量范围缩小
for (int n = 2; n < 100; n++) {
// 计算平方的值,并转化为String类型
String ch1 = String.valueOf(n*n);

// 计算立方的值,并转化为String类型
String ch2 = String.valueOf(n*n*n);

//将平方和立方的char类型拼接起来
String ch = ch1+ch2;
char[] ch3 = ch.toCharArray();
//排序
Arrays.sort(ch3);

//使用String类型,为了容易作比较
String num = String.valueOf(ch3);

if (str.equals(num)) { //对比字符串,输出 n 的值
System.out.println(n);
}

}
}
}