题解 UVA10334 【Ray Through Glasses】

拿了最优解,再来蹭题解

这道题目其实就是让你去求斐波那契数列的第N项

其中:

Fibonacci[0]=1;

Fibonacci[1]=2;

......

Fibonacci[i]=Fibonacci[i-1]+Fibonacci[i-2];

But!

记得开高精!

让我们来回顾下高精求和

因为不会有前导零,就不用去了

我写的比较繁杂

inline string Get_Sum(string A,string B)
{
    register int i;
    register int Carry=0;
    register int LenA,LenB;
    LenA=A.size(),LenB=B.size();
    register string Return="";
    //下面开始补齐数位
    if(LenA<LenB)
    {
        Return=A;
        for(i=1;i<=LenB-LenA;i++)
        {
            Return='0'+Return;
        }
        A=Return;
        LenA=LenB;
    }
    else
    {
        if(LenB<LenA)
        {
            Return=B;
            for(i=1;i<=LenA-LenB;i++)
            {
                Return='0'+Return;
            }
            B=Return;
            LenB=LenA;
        }
    }
    //补完数位
    Return="";
    //下面是标准高精
    for(i=LenA-1;i>=0;i--)
    {
        register int Now;
        Now=Carry;
        Now+=A[i]-'0'+B[i]-'0';
        Carry=0;
        if(Now>=10)
        {
            Carry=1;
            Now-=10;
        }
        Return=(char)(Now+'0')+Return;
    }
    //求和完毕
    if(Carry!=0)
    {
        return (char)(Carry+'0')+Return;
    }
    //如果最后还有进位,千万不要落下!
    return Return;
}
View Code

代码就不放了啊,请诸位锻炼锻炼手指(逃

posted @ 2020-08-08 14:34  Bushuai_Tang  阅读(78)  评论(0编辑  收藏  举报