F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n≥2)。
前 10 項(索引 0~9):0, 1, 1, 2, 3, 5, 8, 13, 21, 34。
**和 = 88**。
#include <iostream>
using namespace std;
int main() {
int n = 10;
long long a = 0, b = 1, sum = a + b; // F0+F1
for (int i = 2; i < n; ++i) {
long long c = a + b;
sum += c;
a = b; b = c;
}
cout << \"前 \" << n << \" 項和 = \" << sum << endl; // 88
return 0;
}
long long fib(int n, vector<long long>& memo) {
if (n <= 1) return n;
if (memo[n] != -1) return memo[n];
return memo[n] = fib(n-1, memo) + fib(n-2, memo);
}
// 主程式累加 fib(0)..fib(9)
// [[1,1],[1,0]]^n = [[F(n+1),F(n)],[F(n),F(n-1)]]
// 適合 n > 1e6 等大規模計算
定義:三位數 abc 滿足 a³ + b³ + c³ = abc。
四個水仙花數:**153, 370, 371, 407**。
#include <iostream>
using namespace std;
int main() {
for (int i = 100; i < 1000; ++i) {
int a = i / 100, b = (i / 10) % 10, c = i % 10;
if (a*a*a + b*b*b + c*c*c == i)
cout << i << ' ';
}
return 0;
}
斐波那契前 10 項和為 **88**。迭代法最簡練高效。水仙花數僅 4 個,暴力枚舉即可。兩題均為經典入門演算法練習,重點在於**邊界條件正確**、**變數型別防溢位**(大 n 用 long long 或大整數庫)。