【每日蓝桥】25、一五年省赛Java组真题“立方变自身”

你好呀,我是灰小猿,一个超会写bug的程序猿!

欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!

标题:立方变自身

观察下面的现象,每一个数字的立方按位相加之后得到的数字还是它的自身,

1^3=1

8^3=512     5+1+2=8

17^3=4913     4+9+1+3=17

......

请你计算包括1、8、17在内的所有符合要求的正整数一共有多少个?

请填写该数字

不要填写任何多余的或说明性文字

解题思路:

本题作为填空题来说,相对难度还是比较简单的,按照正常的思路,我们只需对数字进行枚举判断即可,但是对于枚举的对象应该是要有一个范围的,我们知道数字越大,那么这个数字的立方当然也就会越大,当一个数字的立方足够大时,显然他的每一位的数字和是不可能和该数字相等的,所以我们就只需要将枚举范围设置在1~99即可,求出每一个数字的立方之后,将该立方数的每一位相加判断是否等于该数即可。

答案源码:

public class Year2015_Bt2 {

	public static void main(String[] args) {
		int ans = 0;
		for (int i = 1; i <= 99; i++) {
			int cube = i*i*i;
			int n=0;    //定义n来记录位数的和
			while (cube>0) {
				n += cube%10;    //对立方数求余得到个位上的数字,并将其相加
				cube /= 10;	//将立方数cube除以10,以便获取下一个个位上的数字		
			}		
			if (n==i) {
				ans++;
//				System.out.println(n);
			}
			
		}
		System.out.println(ans);
	}

}

输出样例:

其中有不足或者改进的地方,还希望小伙伴留言提出,一起学习!

感兴趣的小伙伴可以关注专栏!

灰小猿陪你一起进步!

猜你喜欢

转载自blog.csdn.net/weixin_44985880/article/details/114486074