标签:mod运算性质,动态规划
分析:
n很大,如果直接求出斐波那契数列的值再去求mod,从来存储数列值的变量会溢出。
考虑斐波那契数列的形式:,可以有:
根据取mod的性质:
1.
2.
从而:
总结一下,为了避免数mod之前数变的太大,不停的mod就行,两个数相加取mod一个数,可以把相加的两个数先都mod n次,也可以一个mod一个不mod,随意。
代码:
#include <iostream>
using namespace std;
int main() {
int num = 1;
cin >> num;
int res = 1;
if (num <= 2) {
cout << res << endl;
}
else {
int f1 = 1, f2 = 1;
for (int i = 3; i <= num; i++) {
res = (f1 + f2) % 1000000007;
f1 = f2 % 1000000007;
f2 = res;
}
cout << res;
cout << endl;
}
return 0;
}