社区讨论
萌新刚学OI1秒,不知道为什么厌氧,求调QAQ
P1356数列的整除性参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo1bsjry
- 此快照首次捕获于
- 2023/10/22 18:28 2 年前
- 此快照最后确认于
- 2023/11/04 21:41 2 年前
CPP
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <map>
using std::cin;
using std::cout;
using std::endl;
int m, n, k;
bool dp[2][110];
int a[1000400], now, next = 1;
int main() {
scanf("%d", &m);
while (m --) {
now = 0, next = 1;
scanf("%d%d", &n, &k);
for (int i = 1, num; i <= n; ++ i) {
scanf("%d", &num);
a[i] = (num % k + k) % k;
// cout << a[i] << " " << endl;
}
dp[now][0] = true;
for (int i = 1; i <= n; ++ i) {
for (int j = 0; j <= k; ++ j) {
if (dp[now][j] == 0) continue;
// cout << dp[now][j] << " " << j << endl;
dp[next][(j + a[i] + k) % k] = dp[now][j];
dp[next][(j - a[i] + k) % k] = dp[now][j];
}
for (int j = 0; j <= k; ++ j) {
dp[now][j] = 0;
}
now ^= 1;
next ^= 1;
}
if (dp[now][0] != 0) cout << "Divisible" << endl;
else cout << "Not divisible" << endl;
for (int j = 0; j <= n; ++ j) {
dp[now][j] = dp[next][j] = 0;
}
}
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...