洛谷2431 正妹吃月饼

来源:互联网 发布:甲骨文java认证 编辑:程序博客网 时间:2024/06/09 13:39

题目:http://www.luogu.org/problem/show?pid=2431
分析:a是保底解,那么就暴力枚举能否加上一个使得a+(1<< i)<=b
代码:

#include <cstdio>#include <algorithm>using namespace std;const long long int ONE=1;const int Tmax=70;long long int x,y,tmpx;int a[Tmax],lena=-1,ans;void init(){    tmpx=x;    while(tmpx>0)    {        a[++lena]=tmpx&1;        tmpx>>=1;    }    return;}void work(){    int i;    for(i=0;i<=62;i++)    {        if(a[i]==1) ans++;        else {            x+=(ONE<<(i));            if(y>=x) ans++;        }    }    printf("%d",ans);    return;}int main(){    scanf("%lld%lld",&x,&y);    if(x>y)     {        printf("0");        return 0;    }    init();    work();    return 0;}
1 0
原创粉丝点击