# 11618 - pB - Birthday Party >author: Utin ###### tags: `math` --- ## Brief 有n個人圍成一圈(編號1~n),每數k個人發一顆氣球,當發到已有氣球的人時即停止,則此時編號為(n, k)最大公因數的人均會拿到氣球。又發了3次不同顏色之氣球,則最後擁有3色汽球的人數即為: 總人數 / 每次(n, k)最大公因數的最小公倍數 ## Solution 0 ```c= #include <stdio.h> #define lcm(a, b) (a / gcd(a, b) * b) long long gcd(long long n, long long k); int main() { int T; long long n, r, b, y, R, B, Y, d; scanf("%d", &T); while (T--) { // input scanf("%lld %lld %lld %lld", &n, &r, &b, &y); // GCD R = gcd(n, r); B = gcd(n, b); Y = gcd(n, y); // LCM d = lcm(lcm(R, B), Y); // output printf("%lld\n", n / d); } } // Euclidean algorithm long long gcd(long long n, long long k) { while (k) { long long tmp = n % k; n = k; k = tmp; } return n; } // By Utin ``` ## Reference