TIOJ-1156

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);
}
comments powered by Disqus