本文主要是介绍蓝桥杯2015年第十三届省赛真题-立方变自身,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目
立方变自身
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17
...请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
请填写该数字,不要填写任何多余的内容或说明性的文字
二、分析
首先我们要找到这些数。以循环遍历的方式进行寻找,但是我们遍历的终止条件不知道,我们尝试找一下,这个无非就是一个数字,既然题目中问有多少个正整数,那我们一定是有它的上界的,那怎么才能知道它的上限呢,一个多大的 数字的立方 每位相加等于它本身,比如 60^3 = 216000,六个数相加最大时等于54,也达不到60,所以当数足够大时,不可能再有数字的立方按位累加仍然等于自身。
在循环遍历的时候,我们要调用一个方法,这个方法可以算一个数字的按位和。
代码:
package lan2015;public class B立方变自身 {public static void main(String[] args) {int count = 0;for(int i = 1; i < 60; i++) {if(i == f(i*i*i)) {count ++;}}System.out.println(count);}public static int f(int m) {int sum = 0;while(m > 0) {sum += m % 10;m /= 10;}return sum;}
}
结果:6
这篇关于蓝桥杯2015年第十三届省赛真题-立方变自身的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!