QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#506522#6964. WerewolvesCorzicaRE 0ms0kbC++201.3kb2024-08-05 18:50:042024-08-05 18:50:04

Judging History

你现在查看的是最新测评结果

  • [2024-08-05 18:50:04]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-08-05 18:50:04]
  • 提交

answer

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int t, cnt, sum[2100006], n, m, now, jie[10005];
inline void dfs(int p) {
	if (p == m) {
		sum[++cnt] = now % m;
		return;
	}
	for (int i = 1; i <= m; i++) {
		now += i;
		dfs(p + 1);
		now -= i;
	}
}
inline void solve(int pre, int suf, int ssum) {
	for (int i = 1; i <= jie[pre]; i++) {
		for (int j = 1; j <= cnt; j++) {
			int p = (ssum - sum[j] + m) % m;
			if (!p) p = m;
			for (int k = 1; k <= jie[suf]; k++) {
				cout << p << ' ';
			}
		}
	}
	cout << "\n";
}
signed main() {
	freopen("text.in", "r", stdin);
	freopen("text.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> t;
	while (t--) {
		cin >> n >> m;
		jie[0] = 1;
		for (int i = 1; i <= n; i++) {
			jie[i] = jie[i - 1] * m;
		}
		if (n < m) {
			for (int i = 1; i <= n; i++) {
				for (int j = 1; j <= jie[n - 1]; j++) {
					cout << 1 << ' ';
				}
				cout << "\n";
			}
			continue;
		}
		cnt = 0, now = 0;
		dfs(1);
		for (int i = 1; i <= n / m; i++) {
			for (int j = (i - 1) * m + 1; j <= i * m; j++) {
				solve((i - 1)*m, n - i * m, j % m);
			}
		}
		for (int i = (n / m) * m + 1; i <= n; i++) {
			for (int j = 1; j <= jie[n - 1]; j++) {
				cout << 1 << ' ';
			}
			cout << "\n";
		}
	}
}

详细

Test #1:

score: 0
Dangerous Syscalls

input:

45
5 3
7 3
14 2
8 3
9 4
6 3
4 4
7 2
11 2
12 2
7 5
9 5
9 2
5 2
19 2
16 2
6 2
6 4
2 2
12 3
5 5
10 2
8 6
18 2
7 6
13 3
10 3
8 5
17 2
10 4
8 2
11 3
15 2
8 4
4 2
6 6
9 3
20 2
13 2
5 4
7 7
7 4
3 3
21 2
6 5

output:


result: