ceo是什么职位什么工作seo网站培训优化怎么做
问题描述】
在Fibonacci数列中,
。例如,Fibonacci数列的前十项是:
0,1,1,2,3,5,8,13,21,34,…
Fibonacci序列的另一个公式是
给定一个整数
,请你计算
在10进制表示下的最后四位。
【输入形式】
输入将包含一个测试用例。每个测试用例仅有一行,包含一个整数
(其中
)。
【输出形式】
对于每个测试用例,输出
的最后四位数字。如果
的最后四位都是零,则输出
;否则,省略任何前导零(即,输出
)。
【样例输入】
0
【样例输出】
0
样例输入】
9
【样例输出】
34
#include <iostream>
#include <string>
using namespace std;const int MOD = 10000;pair<int, int> fast_doubling(int n) {if (n == 0) {return {0, 1};}auto [a, b] = fast_doubling(n >> 1);int c = (a * (( (2 * b - a) % MOD + MOD ) % MOD )) % MOD;int d = ( (a * a % MOD) + (b * b % MOD) ) % MOD;if (n & 1) {return {d % MOD, (c + d) % MOD};} else {return {c % MOD, d % MOD};}
}int main() {int n;cin >> n;if (n == 0) {cout << 0 << endl;return 0;}auto [fib_n, fib_n1] = fast_doubling(n);int res = fib_n;char buffer[5];sprintf(buffer, "%04d", res);string s(buffer);size_t start = s.find_first_not_of('0');if (start == string::npos) {cout << 0 << endl;} else {cout << s.substr(start) << endl;}return 0;
}