結果
問題 | No.2767 Add to Divide |
ユーザー |
|
提出日時 | 2024-05-31 22:05:17 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 57 ms / 2,000 ms |
コード長 | 1,039 bytes |
コンパイル時間 | 1,783 ms |
コンパイル使用メモリ | 193,172 KB |
最終ジャッジ日時 | 2025-02-21 17:56:31 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 16 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;int main(){ios::sync_with_stdio(false);cin.tie(0);int T;cin >> T;while(T--){ll a, b;cin >> a >> b;if(b % a == 0){cout << 0 << '\n';continue;}ll c = b / a;if(c == 1){cout << -1 << '\n';continue;}// c 倍以下は確定// A * k == B// (a + x) * k == (b + x)// a + (k - 1) * x == b// b - a == (k - 1) * xll ans = -1;for(ll i = 1; i <= 50000; i++){if((b + i) % (a + i) == 0){ans = i;break;}}if(ans != -1){cout << ans << '\n';continue;}for(ll i = min(50000ll, c); i >= 2; i--){if((b - a * i) % (i - 1) == 0){ans = (b - a * i) / (i - 1);break;}}cout << ans << '\n';}}