この質問は、シーケンス計算するプログラムの準備が必要です2/1+3/2+5/3+8/5+...
前のN
段落を。シーケンスは最初の2
項から始まり、各項の分子は前の項の分子と分母の合計であり、分母は前の項の分子であることに注意してください。
入力フォーマット:
1行に正の整数を入力しN
ます。
出力フォーマット:
部分和の値を小数点以下2桁まで正確に1行で出力します。タイトルは、計算結果が倍精度の範囲を超えないことを保証します。
入力サンプル:
20
サンプル出力:
32.66
コード:
# include <stdio.h>
# include <stdlib.h>
int main() {
int N;
scanf("%d",&N);
double value = 0.0,a = 1.0,b = 2.0,temp;
// a和b分别代表分母和分子
int i = 1;
while (i <= N) {
value += (b / a);
// 第(i+1)分母 == 第i分子,第(i+1)分子 = 第i分母 + 第i分子
temp = b;
b += a;
a = temp;
i += 1;
}
printf("%.2lf",value);
return 0;
}
スクリーンショットを送信:
問題解決のアイデア:
この質問の数学的アイデアはフィボナッチ纳妾
(O(∩_∩)O)です。元々はウサギの生殖の問題を研究するために使用されていましたがPAT
、今では変化を伴う運動の問題になっています!以下は、分数を分子と分母に分けて理解します。
- 分子:
2 3 5 8
- 分母:
1 2 3 5
見つけることが第(i+1)分母 == 第i分子,第(i+1)分子 = 第i分母 + 第i分子
できるので、コードを簡単に書くことができます!