牛客3402F-参赛-思维

链接: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;
}
发布了144 篇原创文章 · 获赞 135 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Nothing_but_Fight/article/details/103755852