是来自第二天训练营的一天。。。被一道看起来很简单的判正误的题目搞晕了。。。
题目描述:
刚开始想的很简单,直接pow值相加就好了嘛,结果是不行,在看了大家的讨论后发现问题出在pow的精度上。
注意点:
1、与整形数比较时要进行强制类型转换。
2、因为有可能5*5=24.999999999,强制类型转换之后就会变成24,因此可以设定一个极小的常数 eps ,使其可以取到正确整数的部分。
因此,解决方法如下(借鉴了一位博主的思想,谢谢啦)
#define ll long long
const int eps = 1e-6;//宏定义
if(g==(ll)(pow(a,d)+eps)+(ll)(pow(b,e)+eps)+(ll)(pow(c,f)+eps));