Build a pile of Cubes

题目如下
image
了解立方和公式即可
image

#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;
   
 }
};
posted @ 2025-08-28 16:07  Civilight~Eterna  阅读(3)  评论(0)    收藏  举报