题目是要求出斐波那契数列n项对一个正整数取模,那么可以把斐波那契数列取模后得到的数列周期求出来。

比如下面一个题目:求出f[n]的后4位,先求出数列对10000取模的周期,然后再查找即可。

 #include<stdio.h>
#define N 15000
#define MOD 10000
int a[N];
int main(void)
{
int i,n;
a[]=;
a[]=;
for(i=;i<N;i++)
a[i]=(a[i-]+a[i-])%MOD;
while(scanf("%d",&n)&&n!=-)
printf("%d\n",a[n%N]);return ;
}

或者利用矩阵快速幂:

#include<stdio.h>
#define MOD 10000
void AN(int a[][2],int b[][2])
{
int a1,a2,a3,a4;
a1=(a[0][0]%MOD*b[0][0]%MOD+a[0][1]%MOD*b[1][0]%MOD)%MOD;
a2=(a[0][0]%MOD*b[0][1]%MOD+a[0][1]%MOD*b[1][1]%MOD)%MOD;
a3=(a[1][0]%MOD*b[0][0]%MOD+a[1][1]%MOD*b[1][0]%MOD)%MOD;
a4=(a[1][0]%MOD*b[0][1]%MOD+a[1][1]%MOD*b[1][1]%MOD)%MOD;
b[0][0]=a1;
b[0][1]=a2;
b[1][0]=a3;
b[1][1]=a4;
}
int main(void)
{
int res[2][2],a[2][2];
int n;
while(scanf("%d",&n)&&n!=-1)
{
int t=n;
res[0][0]=res[1][1]=a[0][0]=a[0][1]=a[1][0]=1;
a[1][1]=res[0][1]=res[1][0]=0;
if(n==0)
printf("0\n");
else{
while(n)
{
if(t&1)
{
AN(a,res);
n-=n&(-n);
}
t>>=1;
AN(a,a);
}
printf("%d\n",res[0][1]%MOD); }
}
return 0;
}

 矩阵A^13=A^*A^4*A;A^N可以这样求,每次求出A^k,k=N&(-N),然后N-=k,直到N为零。

Fibonacci数列对任何数取模都是一个周期数列的更多相关文章

  1. hdoj 4828 卡特兰数取模

    Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  2. uva 10692 Huge Mods 超大数取模

    vjudge上题目链接:Huge Mods 附上截图: 题意不难理解,因为指数的范围太大,所以我就想是不是需要用求幂大法: AB % C = AB % phi(C) + phi(C) % C ( B ...

  3. UVa 11582 Colossal Fibonacci Numbers! 【大数幂取模】

    题目链接:Uva 11582 [vjudge] watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fil ...

  4. HPU 1471:又是斐波那契数列??(大数取模)

    1471: 又是斐波那契数列?? 时间限制: 1 Sec 内存限制: 128 MB 提交: 278 解决: 27 统计 题目描述 大家都知道斐波那契数列吧?斐波那契数列的定义是这样的: f0 = 0; ...

  5. [LeetCode] 29. Divide Two Integers(不使用乘除取模,求两数相除) ☆☆☆

    转载:https://blog.csdn.net/Lynn_Baby/article/details/80624180 Given two integers dividend and divisor, ...

  6. HDU 6211 卡常数取模 预处理 数论

    求所有不超过1e9的 primitive Pythagorean triple中第2大的数取模$2^k$作为下标,对应a[i]数组的和. 先上WIKI:https://en.wikipedia.org ...

  7. 【Gym 100947E】Qwerty78 Trip(组合数取模/费马小定理)

    从(1,1)到(n,m),每次向右或向下走一步,,不能经过(x,y),求走的方案数取模.可以经过(x,y)则相当于m+n步里面选n步必须向下走,方案数为 C((m−1)+(n−1),n−1) 再考虑其 ...

  8. 小a的学期 (组合数取模模板)

    题目描述 小a是一个健忘的人,由于他经常忘记做作业,因此老师对他很恼火. 小a马上就要开学了,他学期一共2n 天,对于第i天,他有可能写了作业,也可能没写作业,不过他自己心里还有点B数,因此他会写恰好 ...

  9. javascript取模运算是怎么算的?其实是取余数

    问到是否整除,这里记录下取模 比如120分钟是不是整点?120%60 === 0 为整点 javascript取模运算是一个表达式的值除以另一个表达式的值,并返回余数. 取模在js里就是取余数的意思. ...

随机推荐

  1. Maven笔记(一)

    1. 坐标 Maven坐标为各种构件引入了秩序,任何一个构件都有必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId, artifactId, version, pa ...

  2. IIS限制ASP.Net 文件上传大小解决方案,修改IIS7/7.5配置

    当在web.config中设置了 httpruntime 后还是无法成功上传大文件,则要修改IIS的系统config IIS 7 默认文件上传大小是30M 要突破这个限制: 修改IIS的applica ...

  3. 转载:在Visual Studio 2013中管理中国特色的社会主义Windows Azure

    原文链接: http://www.pstips.net/get-azurechinacloud-settings.html 谷歌被豪迈地放弃了中国市场,微软仍旧在中国市场摸爬滚打,跪着挣钱.其中私人定 ...

  4. json(gson) 转换html标签带来的麻烦

    gson 转换html标题时,会把html(特殊字符转换为unicode编码) ,所以为了避免这个问题GsonBuilder类 有一个 disablehtmlEscaping方法. 就可以让gson类 ...

  5. iOS 中二维码扫描(zxingObjc和原生)

    对于网上的第三方 ZXingObjC,自我感觉是对原生的AVFoundation中关于二维码部分的一个封装,大致看看ZXingObjC的内部实现其事和原生的实现相似的,里面都用到了AVFoundati ...

  6. MYSQL连接数据库

    web.config <connectionStrings>   <add name="MysqlDB" connectionString="Data ...

  7. ECMAScript 6 中的一些新特性

    1.箭头函数,直接写出来v =>看不出来什么,但是跟传统写法一比较,很直观地就能看出v =>是代替了匿名函数 function(v)的写法,{}与逻辑照旧,但是要注意,=与>之间不能 ...

  8. javascript dom 编程艺术笔记 第四章:图片库

    首先先建立一个html文件,建立一个图片库 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  9. 关于C++几个容易混淆的概念总结

    1.函数指针和指针函数 函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象.函数指针的定义: int (*func)(int a, int b); // 声明函数指针 指 ...

  10. ubuntu server修改时区

    公司用的是ubuntu server 服务器在美国亚马逊VPS 现在要修改时区 执行:tzselect 或直接修改 /etc/timezone 文件,我是改成(America/Los_Angeles) ...