关于pow()精度问题

判正误

https://ac.nowcoder.com/acm/contest/3003/G

是来自第二天训练营的一天。。。被一道看起来很简单的判正误的题目搞晕了。。。
题目描述:图片说明
刚开始想的很简单,直接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));

全部评论

相关推荐

nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务