2011-12-06 8 views
5

problem 45プロジェクトオイラー数45プロジェクト・オイラーから

三角形、五角形、及び六角形の数字は、以下の式によって生成される:

トライアングルT_を(N)= N(N + 1)/ 2 1、3、6、10、15、...

五角形P_(N)= N(3N-1)/ 2 1、5、12、22、35、...

六角形H_(n)= n(2n-1)1,6,15,28,45、···

これは、T_(285)= P_(165)= H_(143)= 40755であることが確認できる。

五角形と六角形の次の三角形の番号を見つける。

ここに質問があります。 これはかなりシンプルで簡単ですが、私のプログラムは、三角形の数値がint型のデータ型で持つことができる最大値を超えると、グリッチに陥ります。私は他のデータ型のネットを検索しようとしましたが、成功しませんでした。

コード

 #include<stdio.h> 
    int main(void) 
    { 
     int i,j,t,h,p,k; 
     int n=10000; 
     for(i=0;i<n;i++) 
     { 
      t=(i*(i+1))/2; 
      for(j=0;j<n;j++) 
      { 
       h=j*(2*j-1); 
       if(h>t) 
       break; 
       if(h==t) 
       { 
        //printf("%d %d\n",h,t); 
        for(k=0;k<n;k++) 
        { 
         p=(k*(3*k-1))/2; 
         if(p>h) 
         break; 
         if(p==h) 
         { 
          printf("%d %d\n",p,i); 
          break; 
         } 
        } 
       } 

      } 
     }  
     printf("done\n"); 
     return(0); 
    } 

答えて

5

はunsigned long long型試してみてください。それは動作するはずです。

+1

プレースホルダを教えてください。 –

+1

unsigned long long variablename; – johnathon

+1

プログラムの 'int'を' unsigned long long'に置き換えて、フォーマット指定子を '%d'から'%llu'に変更してください。 –

関連する問題