zoukankan      html  css  js  c++  java
  • 斐波那契数应用

    • 比赛描写叙述

    知道斐波那契数吗?以下是它的一个定义:
    F1 = 1
    F2 = 2
    Fn+1 = Fn+Fn-1 。这里n>1

    每一个正整数x 可写为不同斐波那契数的总和。因而意味着存在数k 和数 b1, b2, …, bk,使得x=b1*F1+ …+ bi*Fi+ … +bk*Fk, 当中bk = 1,bi (1≤i < k)为0或1。简言之,我们可写为: b(x) = (bk, bk-1, …, b1)。 为使表示唯一,我们要求对全部i > 1,bi * bi-1 = 0。

    利用斐波那契数,我们能够将公里单位距离 x 转换为对应的英里单位距离 y。首先,以斐波那契系统表示b(x)写下x。

    其次。将b(x)中数字右移一位(最后一位删除),得到b(y)。第三,从b(y)中计算总数来算出 y。

    比如,数42以斐波那契系统表示为:(1,0,0,1,0,0,0,0)。第二步,我们通过右移得到 (1,0,0,1,0,0,0)。第三步。我们计算0*1 + 0*2 + 0*3 + 1*5 + 0*8 + 0*13 + 1*21 = 26.

    以下请你写一个程序,依据上述算法将公里转换为英里。

    • 输入

    输入第一行包括t。须要转换的距离数目 (t<25000)。以下t 行的每一个包括一个整数距离x (2 < x < 25000)公里。

    • 输出

    对于每一个距离x 公里,输出算出的y 英里。

    • 例子输入

    5
    42
    100
    180
    300
    360

    • 例子输出

    26
    62
    111
    185
    222

     #include<iostream>
    using namespace std;
    int fa[23]={0,1,2};
    void fab(int n=23)
    {
        int i;
        for(i=3;i<=n;i++)
            fa[i]=fa[i-2]+fa[i-1];
    }
    
    int main()
    {
        int i,n,x,j,sum,visit[23];
        fab();
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            memset(visit,0,sizeof(visit));
            sum=0;
            scanf("%d",&x);
            for(j=21;j>=1;j--)
            {
                if(sum+fa[j]<x)
                {visit[j]=1;sum=sum+fa[j];}
                else
                    if(sum+fa[j]==x)
                    {
                        visit[j]=1;break;
                    }
            }
            x=0;
            for(j=1;j<=21;j++)
                visit[j]=visit[j+1];
            for(j=1;j<=21;j++)
                if(visit[j])
                x=x+fa[j];
            printf("%d
    ",x);
        }
        return 0;
    }
    
  • 相关阅读:
    Haskell Interactive Development in Emacs
    Access Java API in Groovy Script
    手工设置Eclipse文本编辑器的配色
    Color Theme of Emacs
    Gnucash的投资记录
    Special Forms and Syntax Sugars in Clojure
    Use w3m as Web Browser
    SSE指令集加速之 I420转BGR24
    【图像处理】 增加程序速度的方法
    TBB 入门笔记
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7160621.html
Copyright © 2011-2022 走看看