求调
查看原帖
求调
525056
I_love_LPN_Forever楼主2022/9/3 16:15

20pts 又wa又t

#include <bits/stdc++.h>
using namespace std;
const int maxn = 20;
int c[maxn], p[maxn], l[maxn];
int M, nowm, n, x, y, g;
void exgcd(int a, int b) {
	if (b == 0) {
		x = 1;
		y = 0;
		g = a;
		return;
	}
	exgcd(b, a % b);
	int t = x;
	x = y;
	y = t - (a / b) * y;
}
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d %d %d", &c[i], &p[i], &l[i]);
		M = max(M, c[i]);
	}
	while (++nowm) {
		bool fl = 1;
		for (int i = 1; i <= n && fl; i++) {
			for (int j = i + 1; j <= n && fl ; j++) {
				exgcd(p[i] - p[j], nowm);
				if ((c[j] - c[i]) % g)
					continue;
				x = x * ((c[j] - c[i]) / g);
				int ret = nowm / g;
				if ((x % ret + ret) % ret <= min(l[i], l[j]))
					fl = 0;
			}
		}
		if (fl)
			break;
	}
	printf("%d\n", max(M, nowm));
} 
2022/9/3 16:15
加载中...