2015-02 立方变自身

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

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值