day2
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可
观察下面的现象,某个数字的平方,按位累加仍然等于自身
1^3=1
8^3=512 5+1+2=8
17^3=4913 4+9+1+3=17
请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
解题:
这是一道简单题,我们首先确定一下边界,数越大越不可能,我们可以定99为边界
将数的立方用一变量表示,我们要将每一位都拆分出来,然后相加判断。在这边有两种解法:
1,使用模与除运算拆分
2,将其转换为字符串,而后用for循环+charAt()方法进行拆分
我偏向于第二种解法,这里需要注意的是,charAt
返回的是一个 char
类型的值,而不是一个数字。如果你想要将这个字符转换成一个整数,你需要进行一些额外的操作。最常见的方法就是通过减去字符 '0'
的方式来转换,因为字符数字 '0'
到 '9'
在 ASCII 表中是连续的。
public class lq_2015_02 {
private static int ans;
public static void main(String[] args) {
for(int i=1;i<99;i++) {
int i1=i*i*i;
int sum = sum(i1);
if(sum==i) {
System.out.println(i+" "+i1);
ans++;
}
}
System.out.println(ans);
}
private static int sum(int x) {
String s = String.valueOf(x);
int sum=0;
for(int i=0;i<s.length();i++) {
sum+=s.charAt(i)-'0';//charAt得到字符串,-'0'得到整数值
}
return sum;
}
}
所以答案为6