5.高中運動會
https://tioj.ck.tp.edu.tw/problems/1156
Description
夢幻城市每年為全市高中生舉辦一次運動大會。為促進各校同學之間的交流,採用特別的分隊方式:每一個學校的同學,必須被均勻分散到各隊,使得每一隊中該校的人數皆相同。為增加比賽的競爭性,希望分成越多隊越好。你的任務是由各校的人數,決定最多可分成的隊數。
Solution
沒想到全國賽竟然有這麼水的題目XDD,題目所求就是所有學校人數的最大公因數
用 __gcd
就足夠了,不過我覺得這份code寫起來很簡短所以我想貼出來ouo,順便加了個輸入優化
AC code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| #include <cstdio>
inline char readchar() {
constexpr int B = 1<<20;
static char buf[B], *p, *q;
if(p == q && (q=(p=buf)+fread(buf,1,B,stdin)) == buf) return EOF;
return *p++;
}
inline int nextint() {
int x = 0, c = readchar();
while(c < '0') c = readchar();
while(c >= '0') x=x*10+(c^'0'), c=readchar();
return x;
}
int gcd(int a, int b) {
while(int t = b) b = a%b, a = t;
return a;
}
signed main() {
int n = nextint(), g = 0;
while(n--) g = gcd(g, nextint());
printf("%d\n", g);
}
|