package 第六屆;
import java.util.LinkedList;
/**
立方尾不變
有些數(shù)字的立方的末尾正好是該數(shù)字本身。
比如:1,4,5,6,9,24,25,....
請(qǐng)你計(jì)算一下,在10000以內(nèi)的數(shù)字中(指該數(shù)字觅彰,并非它立方后的數(shù)值)鳍侣,符合這個(gè)特征的正整數(shù)一共有多少個(gè)抡医。
請(qǐng)?zhí)峤辉撜麛?shù)英融,不要填寫(xiě)任何多余的內(nèi)容癣防。
answer 36
思路:
1.將立方數(shù)的值進(jìn)行while循環(huán),while循環(huán)的目的是為了知道原數(shù)字的長(zhǎng)度,到底是1位數(shù)還是2位數(shù)還是3位數(shù),所以初始化一個(gè)記錄有多少位的count,每除以10一次就count++,
2.根據(jù)count的長(zhǎng)度,取立方值得后count位,將它們存為一個(gè)string類型,
再用Integer解析出來(lái),
然后進(jìn)行判斷是否相同,如果相同,那么記錄數(shù)加1.
這里要注意的是一開(kāi)始 int index= i進(jìn)行的賦值,因?yàn)槿绻毁x值的話,那么 在while循里面就是 i!=0, i要進(jìn)行縮位,i/=10,因?yàn)檫@個(gè)外循環(huán)的指針就是i,如果將指針進(jìn)行改變的話,每次都 / 10,就變成了死循環(huán),永遠(yuǎn)出不去
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);
}
}
}