首页 > 代码库 > 待修改 nyoj 412

待修改 nyoj 412

测试好多数据都正确,一直wrong ans

仔细思考

#include<iostream>#include<math.h>//x&-x 为x的二进制中最低位1的权值 列: 110010为 2  11100为4 ,所以 log2(4)表示最低位1在第2位using namespace std;int lowbit(int n){    return log(n&-n)/log(2);}int main(){    int n;    while(cin>>n)    {        int pos1=lowbit(n);                int n2=lowbit(n+n&-n);        //cout<<"hello"<<pos1<<n2<<endl;        int ne=n+(n&-n);                int count=n2-pos1-1;        int a=1;        for(int i=0;i<count;i++)        {            ne+=a;            a=a<<1;                }        cout<<ne<<endl;        }    return 0;}