赞
踩
结果: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倍
答案: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题并不知道如何结束输出先欠着吧 有人说用hasnext()来判断结束
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。