結果
問題 | No.862 XORでX |
ユーザー |
![]() |
提出日時 | 2024-03-11 12:52:33 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 11 ms / 2,000 ms |
コード長 | 2,135 bytes |
コンパイル時間 | 1,460 ms |
コンパイル使用メモリ | 127,908 KB |
最終ジャッジ日時 | 2025-02-20 03:45:39 |
ジャッジサーバーID (参考情報) |
judge1 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 28 |
ソースコード
#include <iostream>#include <vector>#include <algorithm>#include <array>#include <iterator>#include <string>#include <cctype>#include <cstring>#include <cstdlib>#include <cassert>#include <cmath>#include <ctime>#include <iomanip>#include <numeric>#include <stack>#include <queue>#include <map>#include <unordered_map>#include <set>#include <unordered_set>#include <bitset>#include <random>#include <utility>#include <functional>using namespace std;void Main(){int N,X;cin >> N >> X;const int M = (int)1e5;vector<int> ans;int r = N % 4;if(X >= 4){if(r == 1){ans.push_back(X);}else if(r == 2){ans.push_back(X ^ 1);ans.push_back(1);}else if(r == 3){ans.push_back(X ^ 3);ans.push_back(1);ans.push_back(2);}else{ans.push_back(X);ans.push_back(1);ans.push_back(2);ans.push_back(3);}for(int i = 4;i <= M && ans.size() < N;i += 4){if(i <= X && X < i + 4){continue;}for(int j = 0;j < 4;j++){ans.push_back(i + j);}}}else{if(r == 1){ans.push_back(X);}else if(r == 2){for(int i = 1;i <= 3;i++){if(i != X){ans.push_back(i);}}}else if(r == 3){if(X == 1){ans.push_back(2);ans.push_back(4);ans.push_back(7);}else if(X == 2){ans.push_back(1);ans.push_back(4);ans.push_back(7);}else{ans.push_back(1);ans.push_back(4);ans.push_back(6);}}else{int y = X % 3 + 1;ans.push_back(X);ans.push_back(y);ans.push_back(4);ans.push_back(4 ^ y);}for(int i = 8;i <= M && ans.size() < N;i += 4){if(i <= X && X < i + 4){continue;}for(int j = 0;j < 4;j++){ans.push_back(i + j);}}}assert((int)ans.size() == N);int x = 0;for(int i = 0;i < N;i++){x ^= ans[i];}assert(x == X);for(int i = 0;i < N;i++){cout << ans[i] << (i + 1 == N ? "\n" : " ");}}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int tt = 1;/* cin >> tt; */while(tt--) Main();}