- //By SiriusRen
- #include#include using namespace std;
- int n,
- c[20],
- p[20],
- l[20],
- mx;
- int exgcd(int a, int b, int & x, int & y) {
- if (!b) {
- x = 1,
- y = 0;
- return a;
- }
- int tmp = exgcd(b, a % b, x, y),
- tt = x;
- x = y;
- y = tt - a / b * y;
- return tmp;
- }
- bool solve(int m) {
- for (int i = 1; i <= n; i++) {
- for (int j = i + 1; j <= n; j++) {
- int k,
- b,
- t2 = c[i] - c[j],
- tt = exgcd(((p[j] - p[i]) % m m) % m, m, k, b);
- if (t2 % tt) continue;
- int tmp = t2 / tt;
- k = ((k * tmp) % (m / tt) + (m / tt)) % (m / tt);
- if (k <= min(l[i], l[j])) return 0;
- }
- }
- return 1;
- }
- int main() {
- scanf("%d", &n);
- for (int i = 1; i <= n; i++) scanf("%d%d%d", &c[i], &p[i], &l[i]),
- mx = max(mx, c[i]);
- for (int i = mx;; i++) if (solve(i)) {
- printf("%d\n", i);
- return 0;
- }
- }
来源: http://www.bubuko.com/infodetail-1999767.html