鏈接:https://ac.nowcoder.com/acm/contest/3402/F
來源:牛客網
題目描述:
jx隊長半夜@小胖:你快出一道簽到題呀,簡單點的,不行打你啊。小胖嚇得趕緊下牀想題,邊想邊和jx隊長吹水,想起了參加acm的種種經歷。有感而發和jx隊長說了想法之後,jx隊長:你這什麼題意,不行啊太難了,我來改。一頓爭辯之後小胖折服了,內心:jx隊長牛逼。jx隊長:睡吧睡吧,找時間請你喝奶茶。
衆所周知:icpc賽制中,一支隊伍由三個隊員和一個教練組成,一個教練可以兼任多個隊伍的教練;天梯賽賽制中,一支隊伍由十個隊員組隊和一個教練組成,一個教練可以兼任多個隊伍的教練;同時,一個隊員可以同時參與兩種比賽,但不能同時參與同一比賽的不同隊伍。
如果參賽隊的Q羣裏教練和隊員的人數共有n人,參賽隊是否剛好所有人都能同時組成隊伍參賽?
輸入描述:
多測試用例
每組測試用例一行,包括一個整數n(1≤n≤300),表示羣內的人數有n人
輸出描述:
對於每組測試用例
如果所有人都能同時參加兩種比賽,請輸出All;
如果所有人都能同時參加icpc但不能同時參加天梯賽,請輸出First;
如果所有人都能同時參加天梯賽不能同時參加icpc,請輸出Second;
否則請輸出No。
輸入樣例:
11
7
9
10
100
輸出樣例:
All
First
No
First
First
核心思想:
對於某個賽事,假設有n人,每隊k個隊員+1位教練,隊員只能在一支隊伍,教練可以執教多支隊伍,所以教練的數量範圍爲[1,隊伍數量]。
如果n%k==0,則拿出k人做教練,n-k爲隊員數(隊伍數爲n/k-1)。
否則,n%k爲教練數,n-n%k爲隊員數(隊伍數爲n/k)。
代碼如下:
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
bool fun(int n,int k)
{
if(n%k==0&&n/k-1>=k)
return 1;
if(n%k>0&&n/k>=n%k)
return 1;
return 0;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int a=fun(n,3);
int b=fun(n,10);
if(a&b) printf("All\n");
else if(a) printf("First\n");
else if(b) printf("Second\n");
else printf("No\n");
}
return 0;
}