2017-10-02 19 views
1

パスカル三角形のハイステップをプリントするにはどうすればよいですか?多分500または1000のプログラムが正常に動作していない私は、高いステップパスカルの三角形のハイステップを印刷

#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned long long int rows, coef = 1; 

    cout << "Enter number of rows: "; 
    cin >> rows; 

    for(unsigned long long int i = 0; i < rows; i++) 
    { 
     for(unsigned long long int space = 1; space <= rows-i; space++) 
      cout <<" "; 

     for(unsigned long long int j = 0; j <= i; j++) 
     { 
      if (j == 0 || i == 0) 
       coef = 1; 
      else 
       coef = coef*(i-j+1)/j; 

      cout << coef << " "; 
     } 
     cout << endl; 
    } 

    return 0; 
} 
+1

通常は、18446744073709551615の後にオーバーフローします。整数がその数を超えると、物事はファンキーになります(ゼロにオーバーフローし、計算結果が不正確になります)。 "BigInteger"クラスが必要です。いくつかの提案についてはhttps://stackoverflow.com/q/4507121/5390105を参照してください。 – ThatsJustCheesy

+0

私はgmpxx.hをお勧めします。あなたはhttps://stackoverflow.com/a/46002206/2785528で "gmpxx.h"の私の使用を見ることができます –

答えて

0

を見つけるしようとすると、そこに高いの手順を印刷すると間違って何もありませんが、あなたの計算がオーバーフローするステップ。いくつかの動的整数ライブラリが必要です。提案については、Big numbers library in c++を参照してください。

したがって、 "coef"の "long long int"(これは標準ではありません)を使用する代わりに、ライブラリによって提供されるいくつかの動的整数クラスを使用します。

関連する問題