New Year's Eve CodeForces - 912B

原题链接

考察:位运算+推导

本质是考察推规律,我一眼看过去还以为是字典树.结果这树枝多的离谱.排除字典树的做法.因为数字又是可以随意取于是本蒟蒻蒙蔽..

参考大佬的正确思路:
        在草稿纸上可以列出1~n的答案可以发现规律:当k==1,答案就是n.当k>1,答案就是2的n的位数次方-1.

 1 #include <iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 int main()
 5 {
 6     ll n,k;
 7     scanf("%lld%lld",&n,&k);
 8     if(k==1) printf("%lld\n",n);
 9     else{
10         int ans = 0;
11         while(n) { n>>=1 ; ans++;} 
12         printf("%lld",(1ll<<ans)-1);
13     }
14     return 0;
15 } 

 

posted @ 2021-01-12 21:03  acmloser  阅读(61)  评论(0编辑  收藏  举报