搓逼的第五题做法 #include<cstdio> (5862)#include<cstring> #include<algorithm> (5863)#include<iostream> #include<cmath> using namespace std; typedef long long ll; const int maxn = 100000 + 5; ll a[maxn]; int main(){ //cout<<log2(100000000000000000)<<endl; int t,k; ll x; scanf("%d",&t); while(t--){ scanf("%lld%d",&x,&k); int cnt = log2(x); if(k > cnt){ printf("-1\n"); } else{ int t = 0; while(x > (ll)0){ if(x % (ll)2 == 0){ //cout<<x / (ll)2<<endl; a[t ++] = x / (ll)2; //cout<<a[t - 1]<<endl; x /= (ll)2; } else{ a[t ++] = (x - (ll)1) / (ll)2; x = (x - (ll)1) / (ll)2; } } printf("%lld\n",a[t - k - 1]); } } return 0; }
点赞 评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务