2017-10-26 4 views
0

Cの150桁の数字の中で10桁の数字の中で最も大きい商品を見つける必要がありますが、何が間違っているのか分かりません。連続数字の最大積

私はnr[]を使用して10個の連続する数字を格納し、nを使用して最大の10個の数字の倍数を格納しました。

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int array[150]={7,3,1,6,7,1,7,6,5,3,1,3,3,0,6,2,4,9,1,9,2,2,5,1,1,9,6,7,4,4,2,6,5,7,4,7,4,2,3,5,5,3,4,9,1,9,4,9,3,4,9,6,9,8,3,5,2,0,3,1,2,7,7,4,5,0,6,3,2,6,2,3,9,5,7,8,3,1,8,0,1,6,9,8,4,8,0,1,8,6,9,4,7,8,8,5,1,8,4,3,8,5,8,6,1,5,6,0,7,8,9,1,1,2,9,4,9,4,9,5,4,5,9,5,0,1,7,3,7,9,5,8,3,3,1,9,5,2,8,5,3,2,0,8,8,0,5,5,1,1}; 
    int i,l,j,nr[10]; 
    long int n=1,k; 
    for(i=0;i<140;i++){ 
     k=1; 
     for(j=i;j<i+10;j++){ 
      k=k*array[j]; 
     } 
     if(n<k){ 
      for(l=0;l<10;l++){ 
       nr[l]=array[i+l]; 
      } 
      n=k; 
     } 
     for(i=0;i<=9;i++){ 
      printf("%d ",nr[i]); 
     } 
     return 0; 
    } 
} 
+0

作成しますか?実行され、期待どおりに動作しません(もしそうなら、どんな方法で)? – Steve

+0

ああ、おそらく問題ではなく、質問自体を – Steve

+0

に移動してください。各反復でスクラッチから製品を計算する必要はありません。 PがX [n] ... X [n + 9]の積である場合、X [n + 1] ... X [n + 10]の積はP/X [n] * X [n + ]。また、0を指定すると、それを完全にスキップすることができます。 –

答えて

1

は、あなたが150桁の数字

+0

私はそれを試みましたが、2番目の "for"は機能しませんでした... – Chrew

+0

いいえ、例えば '{" 7 "、" 3 "、" 5 "}' 0と1で始まる2桁の文字列しかありません – Steve

0

を必要とするので、あなたが持っている最大の問題は、あなたの外側のforループ内returnを持っているということですfor(i=1;i<=150;i++); を試してみてください。つまり、10個の数字の最初のバッチを見てから、ループから抜け出すことになります。

nrアレイを外側ループの内側に印刷しているため、多くのものが印刷されるという問題もあります。あなたはおそらく、あなたのリターンの直前に、それを外にしたいでしょう。それらを修正

が列与える:

9 4 9 4 9 5 4 5 9 5 

を私がチェックしていませんが、そこに9人のの多くはそこにありますし、4よりも小さいものはそう簡単にそれが一度掛けた最大の文字列だと想像することはできません。

+0

Omgはとても感謝しています。私はずっと時間を失い、気づかなかったと信じています... – Chrew