51nod1491

1 篇文章 0 订阅

q=5+12 ,在黄金系统下面 ai(i[1,n]) 等于 ni=0ai ˙qni ,其中 ai{0,1}

现在给出两个黄金系统下面的数字,请比较他们的大小。

先推一下:

q0=1

q1=5+12

q2=(5+1)24=6+254=5+32

发现 q2=q1+q0

于是有: qi+2=q2 ˙qi=(q1+q0) ˙qi=qi+1+qi

这不就是斐波拉契数列??

于是就可以做了

斐波拉契数列的判大小,看程序吧

#define N 100010
char a[N],b[N];
int n,m,c[N],d[N];
int main()
{
    scanf("%s%s",a+1,b+1);
    n=strlen(a+1);
    m=strlen(b+1);
    fr(i,1,n)
        c[i]=a[n-i+1]-48;
    fr(i,1,m)
        d[i]=b[m-i+1]-48;
    while(!c[n])
        n--;
    while(!d[m])
        m--;
    n=max(n,m);
    fr(i,1,n)
        c[i]-=d[i];
    fd(i,n,1)
    {
        if(c[i]>=2)
        {
            printf(">\n");
            return 0;
        }
        if(c[i]<=-2)
        {
            printf("<\n");
            return 0;
        }//这两个在下面解释
        if(i>=3)
        {
            c[i-1]+=c[i];
            c[i-2]+=c[i];
            c[i]=0;
        }
    }
    if(c[2]<0)
        printf("<\n");
    else
        if(c[2]>0)
            printf(">\n");
        else
            if(c[1]<0)
                printf("<\n");
            else
                if(c[1])
                    printf(">\n");
                else
                    printf("=\n");//最后两位特判掉(相当于边界)
    return 0;
}

解释:

满足 cj{1,0,1}(j<i) 且有 ci=2(or2)

C={,x,a,b,2}(a,b{1,0,1})C={,x,a+2,b+2}

我们可以得到: a+2>0,b+2>0

在提出来: C={,x+1,a+3,b+1}

其中: b+10,a+32

又得到了开始的情况!

所以 C 一定是大于0的!

然后 ci=2 的情况同理: C<0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值