大菲波数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12716    Accepted Submission(s): 4352


Problem Description
Fibonacci数列,定义如下:
f(1)=f(2)=1
f(n)=f(n-1)+f(n-2) n>=3。
计算第n项Fibonacci数值。
 

 

Input
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
 

 

Output
输出为N行,每行为对应的f(Pi)。
 

 

Sample Input
5 1 2 3 4 5
 

 

Sample Output
1 1 2 3 5
 

 思路:很纯粹的高进度加法

复制代码
#include<cstdio>
#include<cstring>
char ans[1005][500];
//二维数组的一个维传递到自定义函数,这个维相当于独立的一个数组,t记录此时main中的i
void plus(char a[],char b[],int t)
{
    int c[500],d[500];
    memset(c,0,sizeof(c));
    memset(d,0,sizeof(d));
    int k,i=1,j=1,n,m;
    n=strlen(a);
    m=strlen(b);
    //逆置存储在整形数组
    for(k=n-1; k>=0; k--)
        c[i++]=a[k]-'0';
    for(k=m-1; k>=0; k--)
        d[j++]=b[k]-'0';
        
    k=n>m?n:m;
    //求和
    for(i=1; i<=k; i++)
    {
        c[i+1]+=(c[i]+d[i])/10;
        c[i]=(c[i]+d[i])%10;
    }
    
    if(c[k+1]) k=k+1;
    //重新转换为字符数组
    j=0;
    for(i=k; i>=1; i--)
        ans[t][j++]=c[i]+'0';

}
int main()
{
    memset(ans,'\0',sizeof(ans));
    int i,n;
    ans[1][0]='1';
    ans[2][0]='1';
    for(i=3; i<=1000; i++)
    {
        plus(ans[i-1],ans[i-2],i);
    }
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        printf("%s\n",ans[n]);
    }

}
复制代码

 

posted @   JL_Zhou  阅读(259)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示