社区讨论

呆马求调

P2429制杖题参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhpi78kz
此快照首次捕获于
2025/11/08 07:45
3 个月前
此快照最后确认于
2025/11/08 07:45
3 个月前
查看原帖
前三个点超时了,请大佬们帮忙看看。
CPP
#include <bits/stdc++.h>
#define N 25
#define int long long
#define mod 376544743

using namespace std;

int n, m, p[N], ans;
bool b[N];

inline int rd() {
	int S = 0, F = 1;
	char ch = getchar();
	for(; ch < '0' || ch > '9'; ch = getchar() )
	if(ch == '-') F = -1;
	for(; ch >= '0' && ch <= '9'; S = (S << 3) + (S << 1) + (ch ^ 48), ch = getchar() );
	return S * F;
}

void dfs(int id, int sum, int s) {
	int cnt, cur;
	cnt = m / s;
	cur = (cnt + 1) * cnt / 2 % mod;
	if(sum % 2) ans = (ans + cur * s) % mod;
	else ans = (ans - cur * s) % mod;
	for(int i = id + 1; i <= n; i++) {
		if(b[i] || s * p[i] > m) continue ;
		b[i] = 1;
		dfs(i, sum + 1, s * p[i]);
		b[i] = 0;
	}
}

signed main() {
	n = rd(); m = rd();
	for(int i = 1; i <= n; i++) p[i] = rd();
	for(int i = 1; i <= n; i++) {
//		memset(b, 0, sizeof(b) );
		b[i] = 1;
		dfs(i, 1, p[i]);
		b[i] = 0;
	}
	printf("%lld", ans);
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...