- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:100の階乗のプログラムって)
100の階乗を求めるプログラムの作り方
このQ&Aのポイント
- 100の階乗を配列を利用してプログラムを組む方法について分かりません。
- 数値を入力して、1から順番に入力して数値までかけて行きたいです。
- 繰り上がり(agari)を利用して、人間が筆算をしているのと同じやり方で計算したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
すみません。さっきのは間違えてました。 for(k=2;k<=a;k++){ //kをsu[]にかける su[0] *= k; for(i=1;i<N;i++){ su[i]*=k; agari=su[i]/10; su[i]%=10; for(j=i-1;j>0;j--){ agari+=su[j] su[j]=agari%10; agari/=10; if(agari==0)break; } su[0]=agari; } }
その他の回答 (1)
- dahho
- ベストアンサー率44% (68/153)
回答No.1
100以下の任意の階乗を求めたいということですね?配列は1つの変数に0から9までの数値だけを入れて10進N桁で計算しようということですね? for(k=2;k<=a;k++){ //kをsu[]にかける su[0] *= k; for(i=1;i<N;i++){ su[i]*=k; if(su[i]>9){ //繰り上がり agari=su[i]; for(j=i;j>0;j--){ su[j]=agari%10; agari/=10; } su[0]=agari; } } } こんな感じでどうでしょう? ちなみに、intの最大が32767ですので、a<100なら、1つの変数に0から99まで入れて、9→99、10→100としても良いですし、ちょっと面倒でも2進数で考えるともっとメモリが節約できます。 1つの変数で9ビット(100は7ビット、intは16ビットなので16-7=9ビット)使うとして、9→511、10→512とします。
お礼
ありがとうございました。 今日、このレポートをしあげてきました。 ですが、自分が書いていなかったのが悪いのですが、【break】は使っちゃダメな授業だったので、結局自力でやりました。ありがとうございます。