题目背景
众所周知,在 10 月 18 日的模拟赛中,众 HYOI 选手因输出过慢而导致了大量 TLE,失去了宝贵的 10 分。
题目描述
使得如下代码不发生 TLE,时间限制为 0.5s
.
#include <iostream>
using namespace std;
const int N = 1 << 12;
int a[N][N];
int add(int a, int b, int k) {
int res = a + b;
while (res >= (1 << k)) {
res = res % (1 << k) + ((res ^ (res % 1 << k)) >> k);
}
return res;
}
int main() {
ios::sync_with_stdio(false);
int k;
cin >> k;
int lim = 1 << k;
for (int i = 1; i < lim; ++i) {
for (int j = 1; j < lim; ++j) {
a[i][j] = add(a[i][j - 1], i, k);
}
}
for (int i = 0; i < lim; ++i) {
for (int j = 0; j < lim; ++j) {
cout << a[i][j] << ' ';
}
cout << '\n';
}
return 0;
}