NOJ1481——Big Fibonacci

来源:互联网 发布:猪八戒考试软件官网 编辑:程序博客网 时间:2024/05/12 22:27
  • 问题描述
  • F0=0, F1=1, F2=1, F3=2, F4=3, F5=5…… 
    Fn = F(n-1) + F(n-2) ( n >= 2)
  • 输入
  • 输入一个整数n( 0 <= n <= 1,000,000,000)
  • 输出
  • 输出 Fn mod 20130719
  • 样例输入
  • 0191000000000
  • 样例输出
  • 0 1342123828
  • 提示
  • 来源
  • 本站或者转载
求斐波那契数列的第n项,暴力的话,超时到哪里去都不知道的。
以前看到过一个用矩阵方式求斐波那契数列的方法, 今天刚好拿来用,结合快速幂

#include<stdio.h>
#include<string.h>

const int mod=20130719;

struct martix
{
__int64 mat[2][2];//用int会溢出
};

martix multiply(martix a,martix b)
{
martix c;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
{
c.mat[i][j]=0;
for(int k=0;k<2;k++)
{
c.mat[i][j]+=a.mat[i][k] * b.mat[k][j];
c.mat[i][j]%=mod;
}
}
return c;
}

int main()
{
__int64 n;
while(~scanf("%I64d",&n))
{
martix per,res;
per.mat[0][0]=per.mat[0][1]=per.mat[1][0]=1;
per.mat[1][1]=0;
res.mat[0][0]=res.mat[1][1]=1;
res.mat[1][0]=res.mat[0][1]=0;
while(n)
{
if(n&1)
res=multiply(res,per);
n>>=1;
per=multiply(per,per);
}
printf("%I64d\n",res.mat[1][0]%mod);
}
return 0;
}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 掏伤耳朵发炎了怎么办 耳朵被掏发炎了怎么办 打的耳洞化脓了怎么办 打了耳洞流脓了怎么办 打了耳洞发炎怎么办 打了耳洞化脓了怎么办 3岁宝宝耳朵流脓怎么办 耳朵里面是湿的怎么办 耳朵里天天很痒怎么办 身上长湿疹很痒怎么办 嗓子干疼耳朵痒怎么办 上火了耳朵嗡嗡响怎么办 太阳凹颧骨外扩怎么办 4岁儿童脊柱侧弯怎么办 瘦的人得多囊怎么办 智齿刚长出来该怎么办 宝宝耳朵睡尖了怎么办 睡觉压的耳朵疼怎么办 月子里奶水越来越少怎么办 月子里生气回奶了怎么办 儿童疫苗本丢了怎么办 跖骨2-5骨折了怎么办 耳朵被水堵住了怎么办 耳朵一直流黄水怎么办 两个月宝宝脐疝怎么办 拔牙后一直渗血怎么办 耳朵滴药水堵了怎么办 刚打的耳洞化脓怎么办 耳朵进水了一直嗡嗡响怎么办 婴儿游泳呛水了怎么办 孩子游泳呛水了怎么办 婴儿洗澡呛水了怎么办 小孩脸上长湿疹老是不好怎么办 油耳堵住了耳朵怎么办 耳屎突然变湿该怎么办 小孩有耳屎好硬怎么办 小孩的耳屎深硬怎么办 1岁宝宝喉咙发炎怎么办 牙旁边的肉疼怎么办 鼻头软骨捏的痛怎么办 耳洞发炎肿了怎么办