結果
問題 | No.862 XORでX |
ユーザー |
|
提出日時 | 2019-08-09 23:14:43 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 135 ms / 2,000 ms |
コード長 | 1,831 bytes |
コンパイル時間 | 1,784 ms |
コンパイル使用メモリ | 174,888 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-19 15:46:03 |
合計ジャッジ時間 | 5,677 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 28 |
ソースコード
#define _USE_MATH_DEFINES#include "bits/stdc++.h"using namespace std;#define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i))#define rep(i,j) FOR(i,0,j)#define each(x,y) for(auto &(x):(y))#define mp make_pair#define MT make_tuple#define all(x) (x).begin(),(x).end()#define debug(x) cout<<#x<<": "<<(x)<<endl#define smax(x,y) (x)=max((x),(y))#define smin(x,y) (x)=min((x),(y))#define MEM(x,y) memset((x),(y),sizeof (x))#define sz(x) (int)(x).size()#define RT returnusing ll = long long;using pii = pair<int, int>;using vi = vector<int>;using vll = vector<ll>;void solve() {int N, X;cin >> N >> X;if (N == 1) {cout << X << endl;return;}int m = N % 4;const int R = 100000;vi ans;vi aa{ X };for (int i = 1; i < 4; ++i)aa.push_back(i);for (int i = 1; i < 4; ++i)if (X^i)aa.push_back(X^i);for (int i = R; i <= R + 5; ++i)aa.push_back(i);sort(all(aa));aa.erase(unique(all(aa)), aa.end());rep(S, 1 << sz(aa)) {int x = 0, cnt = 0;rep(i, sz(aa)) {if (S >> i & 1) {x ^= aa[i];cnt++;}}if (x==X&&cnt % 4 == m && cnt <= N && R + 5 - sz(aa) + cnt >= N) {rep(i, sz(aa)) {if(S>>i&1)ans.push_back(aa[i]);}N -= cnt;break;}}int n = N / 4;for (int i = 4; i < R+5 && n>0; i += 4) {int j = i + 4;if (i <= X && X < j)continue;n--;for (int k = i; k < j; ++k)ans.push_back(k);}int x = 0;each(a, ans) {x ^= a;cout << a << endl;}assert(x == X);}int main() {ios::sync_with_stdio(false);cin.tie(0);cout << fixed << setprecision(15);solve();return 0;}