package 第六届;
import java.util.LinkedList;
/**
立方尾不变
有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。
answer 36
思路:
1.将立方数的值进行while循环,while循环的目的是为了知道原数字的长度,到底是1位数还是2位数还是3位数,所以初始化一个记录有多少位的count,每除以10一次就count++,
2.根据count的长度,取立方值得后count位,将它们存为一个string类型,
再用Integer解析出来,
然后进行判断是否相同,如果相同,那么记录数加1.
这里要注意的是一开始 int index= i进行的赋值,因为如果不赋值的话,那么 在while循里面就是 i!=0, i要进行缩位,i/=10,因为这个外循环的指针就是i,如果将指针进行改变的话,每次都 / 10,就变成了死循环,永远出不去
public class A2 {
public static void main(String[] args) {
int num = 0;
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i=1;i<=10000;i++)
{
int index = i;
int count = 0;
long result = (long) Math.pow(index, 3);
while(index!=0)
{
index/=10;
count++;
}
String target = "";
for(int j=0;j<count;j++) {
target = result%10+target;
result/=10;
}
int end = Integer.parseInt(target);
if(end == i) {
list.add(i);
num++;
}
}
System.out.println(num);
for(int a : list) {
System.out.println(a);
}
}
}
package 第六届;
import java.util.LinkedList;
public class A2 {
public static void main(String[] args) {
int num = 0;
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i=1;i<=10000;i++)
{
int index = i;
int count = 0;
long result = (long) Math.pow(index, 3);
while(index!=0)
{
index/=10;
count++;
}
String target = "";
for(int j=0;j<count;j++) {
target = result%10+target;
result/=10;
}
int end = Integer.parseInt(target);
if(end == i) {
list.add(i);
num++;
}
}
System.out.println(num);
for(int a : list) {
System.out.println(a);
}
}
}