减法失效?
double竟然比long long厉害。。不过还是遇到BUG了
下面的代码
#include<iostream>
#include<cmath>
using namespace std;
typedef long long LL;
double quickpow(LL b)
{
double a=2;
double ans=1;
while(b)
{
if(b&1)
ans*=a;
printf("%.0lf\n",ans);
a*=a;
b>>=1;
printf("%.0lf\n",a);
}
return ans-1;
}
int main()
{
LL n;
cin>>n;
printf("%.0lf",(quickpow(n)));
return 0;
}
在n小于某个值的时候求的是2^n-1;
但当输入64的时候,减一似乎失效了?
问了几个群里的大佬,查的知乎,似乎是精度失效了
作者:qbning
-------------------------------------------
个性签名:曾经的我们空有一颗望海的心,却从没为前往大海做过真正的努力
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!