#include <iostream>
using namespace std;
typedef long long LL;
template<typename T>
T gcd(T a, T b) {
return b ? gcd(b, a % b) : a;
}
template<typename T>
T lcm(T a, T b) {
return a / gcd(a, b) * b;
}
LL cnt, n, a, b;
LL cal(int x, int a, int b) {
int cnt = 0;
int r1, r2, r;
r1 = r2 = 0;
LL t, ans = 0;
while (cnt < x) {
r = min(a - r1, b - r2);
t = abs(r1 - r2);
r = min(r, x - cnt);
r1 = (r1 + r) % a;
r2 = (r2 + r) % b;
ans += t * r;
cnt += r;
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
int n, a, b, T;
cin >> T;
while (T--) {
cin >> n >> a >> b;
LL t = lcm<LL>(a, b);
if (n <= t) {
cout << cal(n, a, b)<<endl;
} else {
LL s = cal((int) t, a, b);
int r = n % t;
t = n / t;
cout << t * s + cal(r, a, b) << endl;
}
}
return 0;
}
HDU 4611
最新推荐文章于 2017-04-11 20:58:38 发布