有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。
结果为:36
解题思路:
先计算数字的立方,然后计算数字本身的数位,再用数组存储数字本身的每一位数,最后就是判断立方尾的每一位与数字本身的每一位是否相等。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
long s = 0; //立方数
int temp1;
int[] arr = new int[100];
boolean flag = true;
int cnt=0; //符合要求的个数
for(int i = 1; i < 10000; i++){
/* 计算数字的立方 */
s = (long)i*i*i;
/* 判断数字本身的数位,并用数组 存储 数字本身的每一位 */
int shuwei = 0; //每一次初始化
temp1 = i;
int t = 0; //下标
do {
arr[t] = temp1%10;
t++;
temp1 /= 10;
shuwei++;
} while (temp1>0);
/* 进行判断立方尾是否相等 */
t=0; //下标重新置0
flag =true;
long w= s;
int a=0;
while(flag){
a=(int) (w%10);
if(a==arr[t]){
shuwei--;
w /= 10;
t++;
}else{ //如果对应的数位不相等
break;
}
if(shuwei == 0){ //立方尾的每一位已经判断完了
cnt++;
flag = false;
System.out.println(s+" "+i); /* 用来测试,看结果 */
}
}
}
System.out.println(cnt);
}
}
可能的结果为:
1 1
64 4
125 5
216 6
729 9
13824 24
15625 25
117649 49
132651 51
421875 75
438976 76
970299 99
1953125 125
15438249 249
15813251 251
52734375 375
53157376 376
124251499 499
125751501 501
242970624 624
244140625 625
420189749 749
423564751 751
669921875 875
997002999 999
1948441249 1249
52776573751 3751
83740234375 4375
124925014999 4999
125075015001 5001
177978515625 5625
244023456249 6249
670151588751 8751
823974609375 9375
824238309376 9376
999700029999 9999
用java判断输入的数是几位数:https://jingyan.baidu.com/article/76a7e409eb8443fc3b6e152b.html