眾所周知, FHVirus
最喜歡壓常了。
現在,他要丟給你一題水題並且逼你壓常。
題目很簡單:輸入一個 $N$ 個數的陣列 $A$,求 $A$ 的「位元與和」、「位元或和」及「位元異或和」,並輸出整個陣列模 $A_1$ 的餘數。
但是,他同時告訴你一個神秘的常數 $longtree$,你的程式的某個常數必須小於那個長樹才行。
你能成功的解開這道怪題,成為新一代的壓常超人嗎?
提示:下面這份程式碼的 $longtree$ 頗大,儘管他會輸出正確的答案,但只會拿到一分。如果你平常喜歡這樣寫程式,孩子,放下屠刀立地成佛啊(?
#include<iostream>
using namespace std;
const int MAXN = 10101;
int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
int A[MAXN], B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;
int long_tree;
int main() {
cin >> long_tree;
cin >> T;
while (T --> 0) {
cin >> N;
x = (1 << 16) - 1, y = 0, z = 0;
for (i = 0; i < N; ++i) {
cin >> A[i];
x &= A[i];
y |= A[i];
z ^= A[i];
}
cout << x << ' ' << y << ' ' << z << endl;
for (i = 0; i < N; ++i) {
cout << A[i] % A[0] << ' ';
}
cout << endl;
}
return 0;
}
輸入第一行有一個正整數 $longtree$ ,代表神奇常數至少要多小才能過這筆測資。
接下來有一個正整數 $T$,代表有 $T$ 筆測資。
每一筆測資,第一行有一個正整數 $N$。
接下來的一行有 $N$ 個正整數 $A_1 \sim A_N$。
對於所有的測資,$T \le 100, N \le 100, 1 \le A_i < 2 ^ {16}$。
對於每一筆測資,先輸出一行包含三個數,分別代表 $A_1 \sim A_N$ 的「位元與和」、「位元或和」及「位元異或和」。
接下來請輸出一行 $N$ 個數字,分別代表 $A_1 \mod A_1 \sim A_N \mod A_1$。
TIOJ April Fools Day Contest 2022
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 範例測資。 | 0 |
2 | 1 | $longtree = 77$ | 1 |
3 | 1~2 | $longtree = 49$ | 6 |
4 | 1~3 | $longtree = 42$ | 7 |
5 | 1~4 | $longtree = 38$ | 7 |
6 | 1~5 | $longtree = 36$ | 7 |
7 | 1~6 | $longtree = 34$ | 7 |
8 | 1~7 | $longtree = 32$ | 14 |
9 | 1~8 | $longtree = 29$ | 49 |
10 | 1~9 | $longtree = 27$ | 2 |