PAT 斐波那契凤尾 (思维水题)

编程入门 行业动态 更新时间:2024-10-27 13:34:28

PAT 斐波那契<a href=https://www.elefans.com/category/jswz/34/1689864.html style=凤尾 (思维水题)"/>

PAT 斐波那契凤尾 (思维水题)

这还是一道蛮有意思的题

首先要知道, 斐波那契数列在大概95的时候就超出基本数据类型的最大存储long long的上限了

而如果直观的考虑用高精度也太麻烦了, 其实因为只需要输出后六位, 我们每次都只取后六位相加就好了, 也就是%1000000

这个地方记得要判断一下n多大时候才会超过6位, 然后用printf("%06d")输出后六位即可了

还有两个细节:

1. 斐波那契数列前两项应该是1, 1 但这题里面却是1 2

2.取后六位六位不是%100000, 而是%1000000, 也就是6个0

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
#define ms(x, n) memset(x,n,sizeof(x));
typedef  long long LL;
const LL maxn = 1e5+5;int n, fib[maxn];
void init()
{fib[1] = 1, fib[2] = 2; //斐波那契第二项为2for(int i = 3; i <= maxn; i++)fib[i] = (fib[i-1]+fib[i-2])%1000000; //只取后6位
}int main()
{init();while(cin >> n){if(n <= 25)cout << fib[n] << endl;elseprintf("%06d\n",fib[n]); //输出后六位}return 0;
}

 

更多推荐

PAT 斐波那契凤尾 (思维水题)

本文发布于:2024-02-12 23:37:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1689855.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:凤尾   思维   PAT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!