fork 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. if (m == 1) {
  24. printf("%d\n", y);
  25. continue;
  26. }
  27. if (n == 1) {
  28. printf("%d\n", x);
  29. continue;
  30. }
  31.  
  32. if (m > n) {
  33. year = x;
  34. while (year <= MAX) {
  35. if (year%n == y) { printf("%d\n", year); break; }
  36. year += m;
  37. }
  38. }
  39. else {
  40. year = y;
  41. while (year <= MAX) {
  42. if (year%m == x) { printf("%d\n", year); break; }
  43. year += n;
  44. }
  45. }
  46.  
  47. if (year > MAX)printf("-1\n");
  48. year = 1;
  49. }
  50. }
  51.  
  52. int gcd(int a, int b) {
  53. int c;
  54. while (b) {
  55. c = a % b;
  56. a = b;
  57. b = c;
  58. }
  59. return a;
  60. }
Success #stdin #stdout 0s 4272KB
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
5
5
1