A题
结果:2429042904288
思路很简单
前20个数分别是
20 24 40 48 60 72 80 96 100 120 140 144 160 168 180 192 200 216 220 240
第2 4 6 8 12 ...n个数分别是24的 1倍 2倍 3倍 4倍 6倍 n/2倍
所以第202420242024 个数就是 24的 101210121012倍
B题
答案:7913837
以前经典的斐波那契函数是
初始数据 是 1 1
然后新的数等于前两个数相加
于是数列为 1 1 2 3 5 8......
本题的意思是 先给你一个数让你初始化数列数据
比如 197
初始化数据是 1 9 7
然后新的数等于前n个数相加(n为S的位数比如197n就为3)
于是数列为 1 9 7 17(1+9+7) 33(9+7+17) 57(7+17+33) 107(17+33+57)197(33+57+107)...
所以我们算法思路也是先根据数入的数S给数列初始化然后再和加上前n个数
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i=10000000;i>=1;i--){
String s =""+ i;
for (int j=0;j<s.length();j++){//初始化数列
list.add(s.charAt(j)-'0');
}
int len = s.length();
boolean ist = false;
while (list.get(list.size()-1)<i){
int sum=0;
for (int j=list.size()-1;j>=list.size()-len;j--){//求前n位数相加
sum+=list.get(j);
}
list.add(sum);
if (sum==i){//如果得到的值等于S输出结果
System.out.println(sum);
ist = true;
break;
}
}
if (ist){
break;
}
}
}
}
C题
C题并不知道如何结束输出先欠着吧 有人说用hasnext()来判断结束