观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17
...
请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
请填写该数字,不要填写任何多余的内容或说明性的文字。
答案:6
解析:这个题难度不大,一个int类型的整数,最大也就是2亿多,一个数的三次方接近等于2亿多,那么这个数也不会太大,即便是一个很大的数也没事,直接用大数BigInteger来做就可以了。
代码如下:
import java.math.BigInteger;
public class 立方变自身
{
private static int cnt = 0; //计数
public static void Method(int n)
{
BigInteger a = BigInteger.valueOf(n); //将n转成大数
BigInteger b = a.pow(3); //n的3次方
String str = b.toString();
int sum = 0;
for(int i=0,t=str.length();i<t;++i) //逐位相加
{
sum = sum + (str.charAt(i)-'0'); //将数字字符转换为数字
}
if(sum==n)
{
cnt++; //满足条件+1
}
}
public static void main(String[] args)
{
for(int i=1;i<=10000;++i) //这个数最小为1,最大不超过10000
{
Method(i);
}
System.out.println(cnt);
}
}