社区讨论

初学OI,萌新求助

P2312[NOIP 2014 提高组] 解方程参与者 5已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mi7db8rg
此快照首次捕获于
2025/11/20 19:48
4 个月前
此快照最后确认于
2025/11/20 19:48
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define rg register
#define il inline
#define gc getchar
typedef long long LL;
const LL MOD = 1000000007;
const LL MAXN = 110;
const LL MAXM = 1e6 + 10;
using namespace std;
LL n,m,i,j,k,cnt,sum;
LL a[MAXN];
LL ans[MAXM];
il LL read() {
	LL res = 0;char c;bool sign = false;
	for(c = gc();!isdigit(c);c = gc()) sign |= c == '-';
	for(;isdigit(c);c = gc()) res = (res << 1) + (res << 3) + (c ^ 48);
	return sign ? -res : res;	 
}
il bool can(LL ck_num) {
	LL sum = 0;
	for(rg LL i = n;i >= 1;i--) {
		sum = ((a[i] + sum) * ck_num) % MOD; 
	}sum = (a[0] + sum) % MOD;
	return !sum ? true : false;
}
int main() {
	n = read();m = read();
	for(i = 0;i <= n;i++) a[i] = read();
	for(i = 1;i <= m;i++) {
		if(can(i)) ans[++cnt] = i;
	}	
	if(!cnt) return printf("0\n"),0;
	printf("%lld\n",1LL * cnt);
	for(i = 1;i <= cnt;i++) printf("%lld\n",1LL * ans[i]);
	return 0;
}

回复

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

正在加载回复...