Good Bye 2015 B. New Year and Old Property
Posted Dysania_l
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Good Bye 2015 B. New Year and Old Property相关的知识,希望对你有一定的参考价值。
题目链接:http://codeforces.com/problemset/problem/611/B
解题思路:
直接暴力推出所有符合条件的。
由进制转换可以知道,二进制只有1个0也就是十进制减去前面任意一个2的次方
然后脑残一样的用了位运算,死都无法表示64位,只能32位,还以为电脑出问题了。。换了pow秒过。。。
实现代码:
#include<bits/stdc++.h> using namespace std; #define ll long long int main() { ll m,n,i,j,a[100],b[10000],na,nb,c=0,num; a[0] = 1; for(i=1;i<63;i++){ a[i] = pow(2,i); a[i]+=a[i-1]; //cout<<a[i]<<endl; } b[0] = a[0]; cin>>m>>n; for(i=1;i<63;i++){ for(j=i-1;j>=0;j--){ num = pow(2,j); b[c++] = a[i] - num; //cout<<b[c-1]<<endl; } if(b[c-1]>=n){ break; } } if(m!=n){ for(i=0;i<c;i++){ if(b[i]>=m){ na=i; break; } } for(i=0;i<c;i++){ if(b[i]>n){ nb = i;break; } } cout<<nb-na<<endl; } else{ int flag = 0; for(i=0;i<c;i++){ if(b[i]==m) flag=1; //cout<<b[i]<<endl; } if(flag == 1) cout<<"1"<<endl; else cout<<"0"<<endl; } return 0; }
以上是关于Good Bye 2015 B. New Year and Old Property的主要内容,如果未能解决你的问题,请参考以下文章
Good Bye 2015 F - New Year and Cleaning
Good Bye 2016 C. New Year and Rating
Codeforces Good Bye 2017 C. New Year and Curling 几何枚举
Good Bye 2014 E - New Year Domino 单调栈+倍增