project eulerの2問目に以下のようなものがありました。
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.
そして以下のコードでなんとか正解にたどり着きました。
#include <stdio.h>> int main(void){ long num[4000]; long sum = 2; num[0] = 1; num[1] = 2; for (int i=0; num[i]<=4000000; i++){ num[i+2] = num[i+1] + num[i]; if (num[i+2]%2 == 0) { sum += num[i+2]; } } printf("%ld", sum); return 0; }
質問は2つあります。
-
はじめ配列を用意するときに目分量でやらざるをえませんでした。この場合目安はどのように決定したらよろしいですか?また、大きすぎるとエラーが出るのはメモリを無駄に使用するからですか?
-
for構文において
for (int i=0; num[i+2]<=4000000; i++){...}
としたところ結果がトンチンカンになってしまいました。これはなぜでしょうか。
プログラミングを始めて1週間足らずの未熟者で、まだc言語の本をパラパラと読んだ程度なので、大変稚拙なコードですがなんとか演習量を増やそうと頑張っている状態です。どなたかご教授お願いいたします。長文失礼いたしました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/09 11:25