Build a pile of Cubes
题目如下

了解立方和公式即可

#include<cmath>
class ASum
{
public:
static long long findNb(long long m){
//判断m是否是完全平方数
// if(m == sqrt(m)*sqrt(m)){
// int k = m;
// }
// else{return -1};
// }
//sqrt()返回的是doule,直接== 比较可能出错(浮点数精度问题)
long long root = (long long)(sqrt(m) + 0.5); //四舍五入
if(m != root*root) return -1;
long long discriminant = 1 + 8*root;
long long sqrt_dis = (long long)(sqrt(discriminant) +0.5);
if(sqrt_dis * sqrt_dis != discriminant) return -1; // 验证完全平方
long long n = (sqrt_dis - 1 )/ 2;
if(n*(n+1)/2 != root ) return -1;
return n;
}
};

浙公网安备 33010602011771号