PAT (Basic Level) Practise:1028. 人口普查

【题目链接】

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入格式:

输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出格式:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入样例:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

输出样例:

3 Tom John

提交代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 // yyyy/mm/dd
 5 int is_a_older_b(char *a, char *b)
 6 {
 7     int i;
 8     for(i = 0; i < 10; i++)
 9     {
10         if(b[i] - a[i] > 0)
11             return 1;
12         if(b[i] - a[i] < 0)
13             return 0;
14     }
15     return 0;
16 }
17
18 int main(void)
19 {
20     int N;
21     int i, cnt;
22
23     char youngest[12] = "1814/09/05";
24     char oldest[12]   = "2014/09/07";
25
26     char youngest_name[10];
27     char oldest_name[10];
28
29     char name[10];
30     char birthday[12];
31
32     scanf("%d", &N);
33
34     cnt = 0;
35     for(i = 0; i < N; i++)
36     {
37         scanf("%s %s", name, birthday);
38
39         if(is_a_older_b("1814/09/05", birthday) && is_a_older_b(birthday, "2014/09/07"))
40         {
41             cnt++;
42
43             if(is_a_older_b(birthday, oldest))
44             {
45                 strcpy(oldest, birthday);
46                 strcpy(oldest_name, name);
47             }
48
49             if(is_a_older_b(youngest, birthday))
50             {
51                 strcpy(youngest, birthday);
52                 strcpy(youngest_name, name);
53             }
54         }
55     }
56
57     if(cnt > 0)
58         printf("%d %s %s", cnt, oldest_name, youngest_name);
59     else
60         printf("0");
61
62     return 0;
63 }
时间: 2024-07-30 17:06:11

PAT (Basic Level) Practise:1028. 人口普查的相关文章

PAT (Basic Level) Practise (中文) 1005

1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候,我们需要计算3.5.8.4.2.1,则当我们对n=5.8.4.2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重

PAT (Basic Level) Practise (中文)1004. 成绩排名 (20)

读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生的姓名 学号 成绩 ... ... ... 第n+1行:第n个学生的姓名 学号 成绩 其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的. 输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低

PAT (Basic Level) Practise 1040 有几个PAT(DP)

1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多少个PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含P.A.T三种字母. 输出格式: 在一行中输出给定字符串中

PAT (Basic Level) Practise 1003. 我要通过!

1003. 我要通过! 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符:2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是

PAT (Basic Level) Practise:1040. 有几个PAT

[题目链接] 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多少个PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含P.A.T三种字母. 输出格式: 在一行中输出给定字符串中包含多少个PAT.由于结果可能比较大,只输出对1000000007取余数的结果. 输入样例: APPAPT 输出样例: 2 提交代码: 1 #includ

PAT (Basic Level) Practise水题1~10

1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展-- 我们今天的题目不是证明卡拉兹猜想,

PAT (Basic Level) Practise 1001. 害死人不偿命的(3n+1)猜想

1001. 害死人不偿命的(3n+1)猜想 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证

PAT (Basic Level) Practise 1002. 写出这个数

1002. 写出这个数 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格. 输入样例: 1234567890987654321123456789 输出样

PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出