杭电历年复试题目——2013年

申明:写本篇文章的目的是为了方便自己使用,以下代码纯属自己编写,因为没有评测系统,因此无法保证正确性,若有人看到错误,请指正,谢谢。

题目1:
简要描述:输入一个数,代表要检测的例子的个数,每个例子中:
输入两个时间(格式HH:MM:SS),前面时间减去后面时间,输出在时钟上显示的时间,格式一样,如果是以为数字的前面补零。

#include<stdio.h>
int main()
{
	int n,h1,h2,m1,m2,s1,s2,hh,mm,ss;
	int tag;
	while(scanf("%d",&n)!=EOF)
	{
		scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
		if(s1-s2<0)
		{
			ss=60+s1-s2;
			tag=1;
		}
		else
		{
			ss=s1-s2;
			tag=0;
		} 
		if(m1-m2-tag<0)
		{
			mm=60+m1-m2-tag;
			tag=1;
		}
		else
		{
			mm=m1-m2-tag;
			tag=0;
		}
		if(h1-h2-tag<0)
			hh=24+h1-h2-tag;
		else
			hh=h1-h2-tag;
		printf("%02d:%02d:%02d\n",hh,mm,ss); 
	}
}

题目2:简要描述:一个活动有N个人参加,一个主持人和N-1个普通参加者,其中所有的人都认识主持人,主持人也认识所有的人,主持人要求N-1个参加者说出他们在参加者中所认识的人数,如果A认识B,则B认识A,所以最少是会认识一个人,就是主持人,他们说出了自己所认识的人数后,需要判断他们中有没有人说谎。
输入:
第一行是N,N=0表示结束
第二行是N-1个数字
输出:
Lie absolutely 或者 Maybe truth
7
1 2 4 5 5 3

9
3 7 7 7 7 5 6 6
两个测试例子中第一个是Lie absolutely,第二个是Maybe truth

#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int x,int y)
{
	return x>y;
}
int main()
{
	int n;//1个主持人,n-1个普通参加者 
	int a[100];//认识的人数 
	int cnt;//记录有多少人除了认识主持人还认识别人 
	bool key;
	while(scanf("%d",&n)&&n!=0)
	{
		cnt=0;
		for(int i=1;i<=n-1;i++)
		{
			scanf("%d",&a[i]);
			if(a[i]>1)//除了认识主持人还认识别人的人数 
				cnt++;
		}
		key=true;
		while(key&&cnt!=0)
		{
			sort(a+1,a+n,cmp);//排序 
			for(int i=2;i<=a[1];i++)
			{
				a[i]--;//从排序后的第2个人开始到a[1]个人,设他们都不认识第1个人了 
				if(a[i]==1)//说明第i个人现在只认识主持人了 
					cnt--;
				else if(a[i]==0)//说明它连主持人都不认识了,这是不符合题意的,说明有人说谎了
					key=false;
			}
			a[1]=1;//假设第1个人和别人都不认识了,只认识主持人 
			cnt--; 
		}
		if(!key)
			printf("Lie absolutely\n");
		else if(key)
			printf("Maybe truth\n");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37230495/article/details/88369907
今日推荐