提出 #373307
ソースコード 拡げる
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <utility>
#include <vector>
using namespace std;
#define M (1<<18)
inline long long next(long long x, long long B) {
return (x >> 1) ^ ((x & 1) * B);
}
inline long long supernext(long long x, const vector<long long> &B) {
long long ret = 0;
for (size_t i = 0; i < B.size(); ++i) {
ret ^= ((x >> i) & 1) * B[i];
}
return ret;
}
inline long long prev(long long x, long long B, int Bs) {
return (x << 1) ^ (((x >> Bs) & 1) * (B * 2 + 1));
}
long long solve0(long long A, long long B, long long X) {
long long x;
x = A;
for (int i = 0; i < M * 100; ++i) {
if (x == X) {
return i;
}
x = next(x, B);
}
return -1;
}
long long solve(long long A, long long B, long long X) {
long long x;
map<long long, int> offset;
x = A;
for (int i = 0; i < M; ++i) {
if (x == X) {
return i;
}
x = next(x, B);
}
int Bs = 0;
for (int i = 0; i < 40; ++i) {
if ((1LL << i) & B) {
Bs = i;
}
}
if (X >= (2LL<<Bs)) {
return -1;
}
x = X;
for (int i = 0; i < M; ++i) {
if (offset.count(x) == 0)
offset[x] = i;
x = prev(x, B, Bs);
}
int mat[36][36];
memset(mat, 0x00, sizeof(mat));
for (int i = 0; i < 36; ++i) {
if (i + 1 < 36)
mat[i][i+1] = 1;
mat[i][0] = (B >> i) & 1;
}
for (int t = 0; t < 18; ++t) {
int mat2[36][36];
memset(mat2, 0x00, sizeof(mat2));
for (int i = 0; i < 36; ++i) {
for (int j = 0; j < 36; ++j) {
for (int k = 0; k < 36; ++k) {
mat2[i][j] ^= mat[i][k] * mat[k][j];
}
}
}
memcpy(mat, mat2, sizeof(mat));
}
vector<long long> B2(36);
for (int i = 0; i < 36; ++i) {
for (int j = 0; j < 36; ++j) {
B2[i] += static_cast<long long>(mat[j][i]) << j;
}
}
x = A;
for (int i = 0; i < M; ++i) {
if (offset.count(x)) {
return offset[x] + static_cast<long long>(i) * M;
}
x = supernext(x, B2);
}
return -1;
}
int main() {
long long A, B, X;
cin >> A >> B >> X;
cout << solve(A, B, X) << endl;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | K - 乱数調整 |
| ユーザ | ClarifierEP |
| 言語 | C++ (GCC 4.9.2) |
| 得点 | 300 |
| コード長 | 2605 Byte |
| 結果 | AC |
| 実行時間 | 429 ms |
| メモリ | 17196 KiB |
ジャッジ結果
| セット名 | Subtask | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 30 / 30 | 270 / 270 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Subtask | subtask_00.txt, subtask_01.txt, subtask_02.txt, subtask_03.txt, subtask_04.txt, subtask_05.txt, subtask_06.txt, subtask_07.txt, subtask_08.txt, subtask_09.txt, subtask_10.txt, subtask_11.txt, subtask_12.txt, subtask_13.txt, subtask_14.txt, subtask_15.txt, subtask_16.txt, subtask_17.txt, subtask_18.txt, subtask_19.txt |
| All | scrambled_00.txt, scrambled_01.txt, scrambled_02.txt, scrambled_03.txt, scrambled_04.txt, scrambled_05.txt, scrambled_06.txt, scrambled_07.txt, scrambled_08.txt, scrambled_09.txt, scrambled_10.txt, scrambled_11.txt, scrambled_12.txt, scrambled_13.txt, scrambled_14.txt, scrambled_15.txt, scrambled_16.txt, scrambled_17.txt, scrambled_18.txt, scrambled_19.txt, scrambled_20.txt, scrambled_21.txt, scrambled_22.txt, scrambled_23.txt, scrambled_24.txt, scrambled_25.txt, scrambled_26.txt, scrambled_27.txt, scrambled_28.txt, scrambled_29.txt, scrambled_30.txt, scrambled_31.txt, scrambled_32.txt, scrambled_33.txt, scrambled_34.txt, scrambled_35.txt, scrambled_36.txt, scrambled_37.txt, scrambled_38.txt, scrambled_39.txt, scrambled_40.txt, scrambled_41.txt, scrambled_42.txt, subtask_00.txt, subtask_01.txt, subtask_02.txt, subtask_03.txt, subtask_04.txt, subtask_05.txt, subtask_06.txt, subtask_07.txt, subtask_08.txt, subtask_09.txt, subtask_10.txt, subtask_11.txt, subtask_12.txt, subtask_13.txt, subtask_14.txt, subtask_15.txt, subtask_16.txt, subtask_17.txt, subtask_18.txt, subtask_19.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| scrambled_00.txt | AC | 25 ms | 800 KiB |
| scrambled_01.txt | AC | 26 ms | 932 KiB |
| scrambled_02.txt | AC | 24 ms | 928 KiB |
| scrambled_03.txt | AC | 54 ms | 920 KiB |
| scrambled_04.txt | AC | 23 ms | 924 KiB |
| scrambled_05.txt | AC | 25 ms | 728 KiB |
| scrambled_06.txt | AC | 25 ms | 924 KiB |
| scrambled_07.txt | AC | 25 ms | 916 KiB |
| scrambled_08.txt | AC | 25 ms | 928 KiB |
| scrambled_09.txt | AC | 25 ms | 800 KiB |
| scrambled_10.txt | AC | 26 ms | 804 KiB |
| scrambled_11.txt | AC | 23 ms | 796 KiB |
| scrambled_12.txt | AC | 25 ms | 836 KiB |
| scrambled_13.txt | AC | 26 ms | 804 KiB |
| scrambled_14.txt | AC | 27 ms | 800 KiB |
| scrambled_15.txt | AC | 421 ms | 17184 KiB |
| scrambled_16.txt | AC | 26 ms | 920 KiB |
| scrambled_17.txt | AC | 25 ms | 924 KiB |
| scrambled_18.txt | AC | 270 ms | 17188 KiB |
| scrambled_19.txt | AC | 281 ms | 17180 KiB |
| scrambled_20.txt | AC | 275 ms | 17184 KiB |
| scrambled_21.txt | AC | 266 ms | 17120 KiB |
| scrambled_22.txt | AC | 251 ms | 17180 KiB |
| scrambled_23.txt | AC | 265 ms | 17180 KiB |
| scrambled_24.txt | AC | 331 ms | 17180 KiB |
| scrambled_25.txt | AC | 263 ms | 17176 KiB |
| scrambled_26.txt | AC | 275 ms | 17188 KiB |
| scrambled_27.txt | AC | 301 ms | 17184 KiB |
| scrambled_28.txt | AC | 27 ms | 796 KiB |
| scrambled_29.txt | AC | 25 ms | 924 KiB |
| scrambled_30.txt | AC | 24 ms | 928 KiB |
| scrambled_31.txt | AC | 224 ms | 9000 KiB |
| scrambled_32.txt | AC | 25 ms | 732 KiB |
| scrambled_33.txt | AC | 23 ms | 920 KiB |
| scrambled_34.txt | AC | 25 ms | 800 KiB |
| scrambled_35.txt | AC | 25 ms | 796 KiB |
| scrambled_36.txt | AC | 25 ms | 920 KiB |
| scrambled_37.txt | AC | 266 ms | 17176 KiB |
| scrambled_38.txt | AC | 265 ms | 17112 KiB |
| scrambled_39.txt | AC | 429 ms | 17196 KiB |
| scrambled_40.txt | AC | 272 ms | 17184 KiB |
| scrambled_41.txt | AC | 407 ms | 17180 KiB |
| scrambled_42.txt | AC | 332 ms | 17112 KiB |
| subtask_00.txt | AC | 26 ms | 924 KiB |
| subtask_01.txt | AC | 60 ms | 796 KiB |
| subtask_02.txt | AC | 25 ms | 800 KiB |
| subtask_03.txt | AC | 26 ms | 732 KiB |
| subtask_04.txt | AC | 24 ms | 796 KiB |
| subtask_05.txt | AC | 26 ms | 764 KiB |
| subtask_06.txt | AC | 25 ms | 808 KiB |
| subtask_07.txt | AC | 25 ms | 736 KiB |
| subtask_08.txt | AC | 23 ms | 924 KiB |
| subtask_09.txt | AC | 24 ms | 928 KiB |
| subtask_10.txt | AC | 25 ms | 800 KiB |
| subtask_11.txt | AC | 24 ms | 736 KiB |
| subtask_12.txt | AC | 24 ms | 796 KiB |
| subtask_13.txt | AC | 24 ms | 920 KiB |
| subtask_14.txt | AC | 24 ms | 920 KiB |
| subtask_15.txt | AC | 25 ms | 920 KiB |
| subtask_16.txt | AC | 24 ms | 800 KiB |
| subtask_17.txt | AC | 56 ms | 792 KiB |
| subtask_18.txt | AC | 24 ms | 924 KiB |
| subtask_19.txt | AC | 25 ms | 928 KiB |