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