Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle | Tn=n(n+1)/2 | 1, 3, 6, 10, 15, ... | ||
Pentagonal | Pn=n(3n1)/2 | 1, 5, 12, 22, 35, ... | ||
Hexagonal | Hn=n(2n1) | 1, 6, 15, 28, 45, ... |
It can be verified that T285 = P165 = H143 = 40755.
Find the next triangle number that is also pentagonal and hexagonal.
#define N 60000
bool isTriangle(_int64 x)
{
double i = (sqrt(8*x+1)-1)/2,
_int64 j = (_int64)(sqrt(8*x+1)-1)/2; // -b+sqrt(b的平方-4ac)/2a
if (i == j)
{
return true;
}
return false;
}
{
double i = (sqrt(8*x+1)-1)/2,
_int64 j = (_int64)(sqrt(8*x+1)-1)/2; // -b+sqrt(b的平方-4ac)/2a
if (i == j)
{
return true;
}
return false;
}
bool isPentagonal(_int64 x)
{
double i = (sqrt(24*x+1)+1)/6, //同上
_int64 j = (_int64)(sqrt(24*x+1)+1)/6;
if (i == j)
{
return true;
}
return false;
}
int main()
{
clock_t ts,te;
ts=clock();
_int64 answer = 0;
int h;
for ( h = 144; ; h++)
{
answer = h*(2*h-1);
if(isPentagonal(answer) == true && isTriangle(answer)== true)
{
break;
}
}
printf("\nanswer %I64d",answer);
te=clock();
printf("\ntime difference: %ds\n",(te-ts)/CLOCKS_PER_SEC);
getchar();
return 0;
}
{
double i = (sqrt(24*x+1)+1)/6, //同上
_int64 j = (_int64)(sqrt(24*x+1)+1)/6;
if (i == j)
{
return true;
}
return false;
}
int main()
{
clock_t ts,te;
ts=clock();
_int64 answer = 0;
int h;
for ( h = 144; ; h++)
{
answer = h*(2*h-1);
if(isPentagonal(answer) == true && isTriangle(answer)== true)
{
break;
}
}
printf("\nanswer %I64d",answer);
te=clock();
printf("\ntime difference: %ds\n",(te-ts)/CLOCKS_PER_SEC);
getchar();
return 0;
}