質問: ### 前提・実現したいこと たびたび失礼いたします。 標準入力からn ( 1 < n < 5000 )を読み込み、n桁以上のフィボナッチ数の中でもっとも小さいものを書き出すプログラムを作っています。 しかし、出力結果はn桁未満で最大のものが表示されてしまいます。 n桁以上で最も小さいフィボナッチ数を表示するにはどうすればいいのでしょうか? ご教授お願い致します。 ### 実行結果 ``` 【正しい結果】 標準入力:2 標準出力:13 標準入力:50 標準出力:15156039800290547036315704478931467953361427680642 【現在の出力結果】 標準入力:2 標準出力:8 標準入力:50 標準出力:9366947731425726508977331996039353971111632790877 ``` ### 該当のソースコード ``` #include #include int main(int argc, char *argv[]) { int D= 10; int n, i, r, am, bm, cm; scanf("%d", &n); char *a= calloc(n,sizeof(char)); char *b= calloc(n,sizeof(char)); char *c= calloc(n,sizeof(char)); for(i= 0; i!=n; i++) a[i]= b[i]= c[i]= 0; a[0]= 0; b[0]= 1; for(am= bm= 1; bm
回答: n桁未満で最大のものができているなら、「その次」のフィボナッチ数はn桁以上で最小のものになるのでは?