【题解】CF1554 Mikasa

题意

给你两个整数 nm ,求集合的 mexn,m<=1e9

Solution:

考点:二进制+模拟。

本人打的 数位 dp 。反正打着很恶心的模拟。

看了标算后豁然开朗:n^x=k <=> n^k<=m 。所以我们只需要检查第一个 n^k>m 的数即可。因为要 k 最小,所以从高到低枚举,取 n^k>=m+1

  • 如果 n>=m+1 ,那么 k0 都能满足 ,直接 break;
  • 如果最高位上的数字相同,此时最高位取 0 满足 n[i]>=p[i]
  • 如果最高位 n[i]=0,p[i]=1 ,此时最高位只能填 1
  • 如果最高位 n[i]=1,p[i]=0 ,根据上述条件直接 break;

看来还是缺乏思考。

#include<bits/stdc++.h> #define INF 0x3f3f3f3f #define ll long long #define PII pair<ll,int> #define All(a) a.begin(),a.end() using namespace std; ll n,m; int main() { ll T; cin>>T; while(T--) { cin>>n>>m; ll res = 0; m++; for(int i = 30; i >= 0 && n < m; i --) { ll t1 = (n>>i) & 1, t2 = (m>>i) & 1; if(t1 == t2) continue; if(t2) res += 1<<i, n |= 1<<i; } cout<<res<<endl; } }

__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530305.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示