两道Fibonnaci简单题(HDU1021,1568)

作者在开始实习前进行算法练习,分享了解决两道题目的思路及代码实现,包括简单的模运算判断和斐波那契数列的计算。

最近两天出去玩休息了,没有做题,惭愧~明天中午就出发取深圳了,终于要开始实习了,不知道公司的人的python会不会很虐呢?如果老总有空给我们指导下就好了!毕竟我对麻省理工计算机学院博士生+微软+亚马逊的经历很感兴趣,应该会是一个很强悍的老总吧!

因为很疲倦,所以没有敢挑难题做,虽然最近作的题目都不难,但是今天做的相对更水啦!

第一题HDU1021是一题非常容易看得出规律的题目~╮(╯▽╰)╭

(n+1)%4==3就输出yes,否则就no

/***********************************************************
> OS     : Linux 3.2.0-60-generic #91-Ubuntu
> Author : yaolong
> Mail   : dengyaolong@yeah.net 
> Time   : 2014年06月08日 星期日 22:19:23
**********************************************************/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;

                 int main(){

                     int n;
                     while(scanf("%d",&n)!=EOF){

                         if((n+1)%4==3){
                             puts("yes");

                         }else{
                             puts("no");   

                         }

                     }

                     return 0;

                 }

第二题其实我看了题解才会做的!后几位就很号办,用取模就可以了,但是前几位我的存档不多,不过大神的解法的确有意思。具体可以参考一下 这里

我的代码写得很挫呢,明天要继续努力了,哪怕在实习!

/***********************************************************
> OS     : Linux 3.2.0-60-generic #91-Ubuntu
> Author : yaolong
> Mail   : dengyaolong@yeah.net 
> Time   : 2014年06月08日 星期日 22:28:53
**********************************************************/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
using namespace std;
int fib[]={0,1,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 
           987, 1597, 2584, 4181, 6765};
int main(){

    int n;
    double f=(sqrt(5.0)+1.0)*0.5;
    while(scanf("%d",&n)!=EOF){
        if(n<=20){
            printf("%d\n",fib[n]);
            continue;

        }   
        double ans=-0.5*log(5.0)/log(10.0)+(n+0.0)*log(f)/log(10.0);
        ans-=(int)ans;
        ans=pow(10.0,ans);
        while(ans<1000.0){
            ans*=10;

        }
        printf("%d\n",(int)ans);


    }



    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值