Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. unsigned long long int gcd(unsigned long long int a, unsigned long long b) {
  5.     return b ? gcd(b, a % b) : a;
  6. }
  7.  
  8. int main() {
  9.     int n, m;
  10.     std::cin >> n >> m;
  11.     unsigned long long int num = 1, den = 1, c;
  12.     if (n > m) {
  13.         std::vector <int> a(n + 1);
  14.         for (int j = 2; j <= m; j++) {
  15.             a[j] = j;
  16.         }
  17.         for (int i = n + 1; i < n + m; i++) {
  18.             num *= i;
  19.             for (int j = 2;j < m; j++) {
  20.                     if (a[j] > -1) {
  21.                     if (num % a[j] == 0) {
  22.                         num /= a[j];
  23.                         a[j] = -1;
  24.                     } else {
  25.                         den *= a[j];
  26.                         a[j] = -1;
  27.                     }
  28.                 }
  29.             }
  30.             if (num >= den) {
  31.                 c = gcd(num, den);
  32.                 num /= c;
  33.                 den /= c;
  34.             }
  35.         }
  36.     } else if (n == m) {
  37.         std::vector <int> a(n + 1);
  38.         for (int j = 2; j <= n; j++) {
  39.             a[j] = j;
  40.         }
  41.         for (int i = n + 1; i < n + m; i++) {
  42.             num *= i;
  43.             for (int j = 2; j < n; j++) {
  44.                 if (a[j] > -1) {
  45.                     if (num % a[j] == 0) {
  46.                         num /= a[j];
  47.                         a[j] = -1;
  48.                     } else {
  49.                         den *= a[j];
  50.                         a[j] = -2;
  51.                     }
  52.                 }
  53.             }
  54.             if (num > den) {
  55.                 c = gcd(num ,den);
  56.                 num /= c;
  57.                 den /= c;
  58.             }
  59.         }
  60.     } else {
  61.         std::vector <int> a(m);
  62.         for (int j = 2; j < m; j++) {
  63.             a[j] = j;
  64.         }
  65.         for (int i = n + 1; i < n + m; i++) {
  66.             num *= i;
  67.             for (int j = 2; j < m; j++) {
  68.                 if (a[j] > -1) {
  69.                     if (num % a[j] == 0) {
  70.                         num /= a[j];
  71.                         a[j] = -1;
  72.                     } else {
  73.                         den *= a[j];
  74.                         a[j] = -2;
  75.                     }
  76.                 }
  77.             }
  78.             if (num > den) {
  79.                 c = gcd(num, den);
  80.                 num /= c;
  81.                 den /= c;
  82.             }
  83.         }
  84.     }
  85.     std::cout << num;
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement