Guest User

Untitled

a guest
Oct 13th, 2023
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #pragma GCC optimize("O3,unroll-loops")
  4. #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
  5. void solve() {
  6.   int a, b; cin >> a >> b;
  7.   int sum = (a + a + b - 1) * b / 2;
  8.   vector<int> factors;
  9.   for (int i = 1; i * i <= sum; i++) {
  10.     if (sum % i == 0) {
  11.       factors.push_back(i);
  12.       if (i * i != sum) factors.push_back(sum / i);
  13.     }
  14.   }
  15.   sort(factors.rbegin(), factors.rend());
  16.   int gcd = 1;
  17.   vector<int> prefix_sum(b);
  18.   prefix_sum[0] = a;
  19.   for (int i = 1; i < b; i++) {
  20.     prefix_sum[i] = prefix_sum[i - 1] + a + i;
  21.   }
  22.   int ans = 1;
  23.   for (int i : factors) {
  24.     int good = 0;
  25.     for (int ss = 1; ss < b; ss++) {
  26.       int lo = prefix_sum[ss - 1];
  27.       int hi = prefix_sum[b - 1] - prefix_sum[b - 1 - ss];
  28.       if (hi - lo >= i or hi % i <= lo % i) good = 1;
  29.     }
  30.     if (good) {cout << i << endl; return;}
  31.   }
  32.   cout << 1 << endl;
  33. }
  34.  
  35. signed main() {
  36.   ios::sync_with_stdio(0); cin.tie(0);
  37.   int t; cin >> t; while (t--) solve();
  38. }
Advertisement
Add Comment
Please, Sign In to add comment