这是问题所在,Project Euler #45
这是我为它编写的代码:
#include <iostream>
#include <math.h>
using namespace std;
bool ispent (long num){
    long double x = (sqrt(24*num+1) + 1.0)/6.0;
    if (floor(x)==x) return true;
    else return false;
}
bool ishex (long num){
    long double x = (sqrt(8*num+1) + 1.0)/4.0;
    if (floor(x)==x) return true;
    else return false;
}
int main(){
    int i=286;
    while(true){
        long x = (i*(i+1))/2;
        if((ispent(x)) && (ishex(x))){
            cout << x;
            break;
        }
        i++;
    }
}
这给出了输出 40755,而我需要下一个数字。可能的错误是什么?