1035: 相同生日

1035: 相同生日

时间限制: 1 Sec  内存限制: 128 MB
提交: 232  解决: 139
[提交][状态][讨论版]

题目描述

在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生。

输入

第一行为整数n,表示有n个学生,n<=200。此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(1<=m<=12)日(1<=d<=31),学号、月、日之间用一个空格分隔。

输出

对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出。

样例输入

6
07101020105 3 15
07101020115 4 5
07101020118 3 15
07101020108 4 5
07101020111 4 5
07101020121 8 10

样例输出

3 15 07101020105 07101020118
4 5 07101020115 07101020108 07101020111
8 10 07101020121

提示

来源

#include <iostream>
#include <algorithm>
using namespace std;
struct student{
 char number[12];
 int month;
 int day;
}stu[201];
bool compare(student a,student b){
 if(a.month<b.month) return true;
 else if(a.month==b.month){
  if(a.day<b.day) return true;
  else return false;
 }else return false;
}
int main(){
 int n,i,j;
 cin>>n;
 for(i=0;i<n;i++){
  cin>>stu[i].number>>stu[i].month>>stu[i].day;
 }
 sort(stu,stu+n,compare);
 for(i=0;i<n;i++){
  for(j=i;j<n;j++){
   if(stu[i].month==stu[j].month&&stu[i].day==stu[j].day){
    if(i==j){
      cout<<stu[i].month<<" "<<stu[i].day<<" "<<stu[i].number;
    }
    else {
     cout<<" "<<stu[j].number;
    }
   }else{
    cout<<endl;
    i=j-1;
    break;
   }
  }
 }
 return 0;
}

时间: 2024-10-29 19:12:14

1035: 相同生日的相关文章

NYOJ-20岁生日

20岁生日 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 路过这的20岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达20岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达20岁生日所经过的总天数,让他好来比较一下. 输入 一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD.如我的生日是1988-03-07. 输出 T行,每行一个数,表示此人从出生到20岁生日所经过的

51Nod - 1035 最长的循环节

51Nod - 1035 最长的循环节 正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数. 1/6= 0.1(6) 循环节长度为1 1/7= 0.(142857) 循环节长度为6 1/9= 0.(1)  循环节长度为1 Input 输入n(10 <= n <= 1000) Output 输出<=n的数中倒数循环节长度最长的那个数 Input示例 10 Outp

SqlSever基础 datediff 计算人的生日是不准确的,示例

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 --查看现在的时间,方便对比 2 select getdate() 3 select datediff(year,'1996-11-01',getdate()) 4 select datediff(year,'1996-11-03',getdate()) 5 --还没过生日呢,怎

生日报警脚本

脚本作业:生日前三天报警脚本 总结; 刚拿到脚本要求,就想到利用date +%J命令来完成,用生日的全年天数与当日的全年天数作对比,判断生日是否过期,比较两者的差值是否等于3天,来进行前三天报警功能,报警语句进行颜色显示.一个简陋的小脚本,结合今天所学知识,秀下成就感.

POJ 1035 Spell checker

题目链接 http://poj.org/problem?id=1035 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24142   Accepted: 8794 Description You, as a member of a development team for a new spell checking program, are to write a module that will check the cor

bzoj1037[ZJOI2008]生日聚会

bzoj1037[ZJOI2008]生日聚会 题意: 一排小孩坐着玩游戏.就座的方案满足如下条件:对于任意连续的一段,男孩与女孩的数目之差不超过k.给出男孩数,女孩数和k,求就座方案数除以12345678的余数. 题解: dp方程见程序,i1i2表示当前选了几男几女,i3i4分别表示当前男比女多几个和女比男多几个. 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define

poj 1035

http://poj.org/problem?id=1035 poj的一道字符串的水题,不难,但就是细节问题我也wa了几次 题意就是给你一个字典,再给你一些字符,首先如果字典中有这个字符串,则直接输出,如果没有的话,那就找字符串加一个字符或少一个字符或者换一个字符是否可以在字典中找到相应的字符串 解题思路:我是用string类型的,比较方便看两个字符串是否相等,用char的话,就是strcmp函数也行. 如果找不到相等的,那么久分别在字典中找到与这个字符串的长度相差1的或者相等的. 然后匹配,如

练习:C#---类(身份证号截取生日、验证邮箱、DateTime)

//练习1:截取生日 Console.Write("请输入你的身份证号码:"); string id = Console.ReadLine(); Console.WriteLine("你的生日是:" + id.Substring(6, 4) + "年" + id.Substring(10, 2) + "月" + id.Substring(12, 2) + "日"); Console.ReadLine();

js 联动实现日期选择,一般用作生日

实现目标:年月日三个select 输入框,以及一个hidden的input,通过js获取input的值,如果有值切是日期格式,年月日select为input中的时间.否则为空.年默认区间段为1900年到当今年份 本人使用了bootstrap,class请参照bootstrap的相关说明 下面是html 内容: <div class="col-sm-9"> <label class="checkbox-inline"> <select n