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);
}
プレースホルダを教えてください。 –
unsigned long long variablename; – johnathon
プログラムの 'int'を' unsigned long long'に置き換えて、フォーマット指定子を '%d'から'%llu'に変更してください。 –