尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2026 FJCPC D题

2026 FJCPC D题 如题一道脑筋急转弯非常有意思。题目说的时候得到1否则是0那么考虑一下什么时候这个条件会成立由异或的性质可知两个数的二进制形式同一个位置上数字相同就是0不相同就是1我们可以瞬间想到如果和最高位1的位置相同那么这一位就会得到0那么一定比原来的小了。基于此我们再考虑X是由所有的异或得到的想要X的最高位1和s[i]1时的最高位1相同必须要让所有的在这一位有奇数个1才行。我们瞬间想通了什么我让s[i]1时的最高位非常高假设都在第59位因为题目要求控制s[i]1时的在第59位的1的数量为奇数那么得到的X一定在这一位上是1那么就能保障s[i]1时反之由于59位为0这些s[i]0的一定。在这里最坏的情况是s[i]1的有偶数个必须让某一个的59位为0那么这样会让这一位。题目保证所以该解合法。代码如下#includebits/stdc.h using namespace std; void solve (){ string s; cins; vectorlong longa; int cnt0; for (int i0;is.size();i){ if (s[i]1)a.push_back((1LL59)i1),cnt; else a.push_back(i1); } if (cnt%20){ for (long long x:a){ if (x(1LL59)){ x-(1LL59); break; } } } for (long long x:a)coutx ; cout\n; } int main () { int t; //cint; t1; while (t--){ solve (); } }
返回列表