斐波那契数列升级版(洛谷P2626题题解,C++语言描述)
生活随笔
收集整理的這篇文章主要介紹了
斐波那契数列升级版(洛谷P2626题题解,C++语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
首先是求斐波那契數列,這東西我就不說了,能看到這篇題解的你肯定會。
為什么要用數組呢?為了記憶化,防止重復算。
當然,由于本題是單查詢,所以不必記憶化,但記憶化對多查詢真的會好很多,空間換時間。
mod是已經計算好的,避免重復求,節省時間,注意2312^{31}231不爆int。
分解質因數的話,就瘋狂懟著盡可能小的因子往下整除。
由于已經把小因子除盡,所以已經消滅了非質數再被整除的可能,所以能再被整除的肯定是質因數,這樣就避免了打一個素數篩。
其他的就是輸出格式咯,不談,看代碼即可。
AC代碼
#include <iostream> #include <cmath>using namespace std;const int mod = pow(2, 31);int fib[49] = {0, 1, 1};int main() {int n;cin >> n;for (int i = 3; i <= n; i++) {fib[i] = (fib[i-1] + fib[i-2]) % mod;}cout << fib[n] << "=";bool flag = false;for (int i = 2; i <= fib[n]; i++) {while (fib[n] % i == 0) {if (!flag) {flag = true;cout << i;} else {cout << '*' << i;}fib[n] /= i;}}return 0; }總結
以上是生活随笔為你收集整理的斐波那契数列升级版(洛谷P2626题题解,C++语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用cmake重写live555工程-附
- 下一篇: 【软件工程】极限编程