问题标题: 酷町堂:2744   斐波那契数列2

0
0
已解决
刘展硕
刘展硕
新手守护
新手守护

题目链接: 酷町堂:2744

2744   斐波那契数列2

经验值:1200 时间限制:1000毫秒 内存限制:128MB

题目描述 De**ion

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数n,要求菲波那契数列中第n个数是多少。n不超过1000

输入描述 Input De**ion

一行:一个正整数n,n不超过1000

输出描述 Output De**ion

个正整数,表示菲波那契数列中第n个数是多少

样例输入 Sample Input

5

样例输出 Sample Output

5

#include <bits/stdc++.h>
using namespace std;
char x[1200];
int s,n,sum,a[1200],b[1200];
string s1,s2;
int main(){
    cin>>n;
    s1="1";
    s2="1";
    for(int j=2;j<n;j++){
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        a[0]=s1.size();
        b[0]=s2.size();
        for(int i=1;i<=a[0];i++){
            a[i]=s1[a[0]-i]-'0';
        }
        for(int i=1;i<=b[0];i++){
            b[i]=s2[b[0]-i]-'0';
        }
        sum=max(a[0],b[0]);
        for(int i=1;i<=sum;i++){
            a[i]+=b[i];
            a[i+1]=a[i]/10;
            a[i]%=10;
        }
        sum++;
        while((a[sum]==0)&&(sum>1)){
            sum--;
        }
        s=0;
        for(int i=sum;i>=1;i--){
            x[s]=a[i]+'0';
            s++;
        }
        s1=s2;
        s2=x;
    }
    cout<<s2<<endl;
    return 0;
}

 


0
已采纳
陈泽睿
陈泽睿
高级光能
高级光能

你就不能定义一个函数,表示高精度加法,然后定义一个字符串f数组,初始化一下,从3开始循环,每次调用函数,f[i]等与前两项之和吗

0
陈泽睿
陈泽睿
高级光能
高级光能

你就不能定义一个函数,表示高精度加法,然后定义一个字符串f数组,初始化一下,从3开始循环,每次调用函数,f[i]等与前两项之和吗

0
我要回答