fork(1) download
  1. #include<stdio.h>
  2.  
  3. int gcd(int a, int b);
  4.  
  5. int main() {
  6. int m = 0, n = 0, x = 0, y = 0, num = 0, MAX = 0, year = 1, MIN = 0;
  7.  
  8. scanf("%d", &num);
  9. for (int i = 0; i < num; ++i) {
  10. scanf("%d%d%d%d", &m, &n, &x, &y);
  11.  
  12. MAX = m * n / gcd(m, n);
  13.  
  14. if (x == y) {
  15. printf("%d\n", x);
  16. continue;
  17. }
  18.  
  19. if (m == x && n == y) {
  20. printf("%d\n", MAX);
  21. continue;
  22. }
  23.  
  24.  
  25. if (m > n) {
  26. year = x;
  27. while (year <= MAX) {
  28. if (year%n == y) { printf("%d\n", year); break; }
  29. year += m;
  30. }
  31. }
  32. else {
  33. year = y;
  34. while (year <= MAX) {
  35. if (year%m == x) { printf("%d\n", year); break; }
  36. year += n;
  37. }
  38. }
  39.  
  40. if (year > MAX)printf("-1\n");
  41. year = 1;
  42. }
  43. }
  44.  
  45. int gcd(int a, int b) {
  46. int c;
  47. while (b) {
  48. c = a % b;
  49. a = b;
  50. b = c;
  51. }
  52. return a;
  53. }
Success #stdin #stdout 0s 4328KB
stdin
11
40000 39999 39999 39998
40000 39999 40000 39999
40000 40000 40000 39999
40000 39998 40000 39997
40000 3 40000 3
12 10 12 10
12 10 1 1
12 6 12 6
10 1 5 1
1 10 1 5
1 1 1 1
stdout
1599959999
1599960000
-1
-1
120000
60
1
12
-1
-1
1