码迷,mamicode.com
首页 > 其他好文 > 详细

ACM_Fibonacci数(同余)

时间:2018-05-11 12:58:43      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:using   other   alt   mod   font   cout   turn   打表   ons   

Fibonacci数

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

斐波那契数列定义如下:f(0)=0,f(1)=1,f(n+2)=f(n+1)+f(n);
求斐波那契数列的第n项对10009取余后的结果。

Input:

多组测试,每组测试输入一个整数n(0<=n<=10^17).

Output:

对于每个测试,输出答案,占一行。

Sample Input:

10

Sample Output:

55
解题思路:运用同余定理:(a+b)%mod=(a%mod+b%mod)%mod。一般像这种取余的题目,答案是有规律的,于是暴力打表,果然发现有循环节数,为3336。注意输入的n已经爆int,要long long,水过。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int mod = 10009;
 4 int main()
 5 {
 6     int a[3336]={0,1};
 7     for(int i=2;i<3336;++i)
 8         a[i]=(a[i-1]%mod+a[i-2]%mod)%mod;
 9     long long n;
10     while(cin>>n)
11         cout<<a[n%3336]<<endl;
12     return 0;
13 }

 

ACM_Fibonacci数(同余)

标签:using   other   alt   mod   font   cout   turn   打表   ons   

原文地址:https://www.cnblogs.com/acgoto/p/9023481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!