你好呀,我是灰小猿,一个超会写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); } }
输出样例: