站外题求助

题目总版

[要是能进去看这里题面](https://kedaoi.cn/p/1479)
by jqQt0220 @ 2023-11-23 19:24:47


@[jqQt0220](/user/678175) 给个样例?好像看到过类似的
by __LiChangChao__ @ 2023-11-23 19:46:35


### 输入 ``` 1 2 3 4 5 0 ``` ### 输出 ``` 2 4 5 8 6 ```
by jqQt0220 @ 2023-11-23 19:50:52


@[changwenxuan](/user/794383)
by jqQt0220 @ 2023-11-23 19:51:01


如果题意我没理解错的话(找到第一个比 $x$ 大的在二进制下 $1$ 的个数与 $x$ 相等的数 $y$),那这个代码应该是正确的: ```cpp #include<bits/stdc++.h> using namespace std; unsigned func(unsigned n) { unsigned x = n & -n; return (n + x) | ((n ^ (n + x)) / x) >> 2; } int main() { unsigned n; while(~scanf("%lld",&n)&&n){ printf("%lld\n",func(n)); } } ``` 题意理解错了另当别论。
by __LiChangChao__ @ 2023-11-23 19:51:57


@[jqQt0220](/user/678175) 好了,我那代码过样例了
by __LiChangChao__ @ 2023-11-23 19:52:52


@[changwenxuan](/user/794383) 稍微解释一下代码,有点看不懂
by jqQt0220 @ 2023-11-23 20:35:22


@[jqQt0220](/user/678175) 某次模拟赛上的题面,那道题是要求改写成支持 $k$ 位无符号整数,鬼知道到底是怎么实现的。连 7 级 @[wxr_](/user/783628) 都证不出来。
by __LiChangChao__ @ 2023-11-23 20:55:35


@[changwenxuan](/user/794383) 你这代码是对的,但是我稍微改了改变量名,然后就 WA 了,看看咋回事: ```cpp #include<bits/stdc++.h> using namespace std; // #define fileio #define IOS void ___() { #ifdef fileio freopen(".in","r",stdin); freopen(".out","w",stdout); #endif #ifdef IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #define endl '\n' #endif } #define ll long long typedef unsigned int uint; uint solve(uint x) { uint t=x&-x,n=x+t; return n|((x^n)/x)>>2; } uint x; int main() { ___(); while(1) { cin>>x; if(!x) break; cout<<solve(x)<<endl; } return 0; } ```
by jqQt0220 @ 2023-11-24 18:33:55


哦豁,变量名改炸了,应该是除以 t 变成除以 x 了
by jqQt0220 @ 2023-11-24 18:46:06


|