题解 P1104 【生日】
蒟蒻第一次发题解
望大佬们海涵
看到这题的瞬间,我想到了一个鬼点子。
(翻了翻看到有类似题解,不过稍稍还是有点出入)
倘若把每个人的出生日期看做他的死亡日期。 把出生日期设为公元第一年一月一日的话……
那就计算他从公元 1.1.1 — xxxx.x.xx 一共有多少天就好了,然后排序输出
(每个人都是千年老妖,有点恐怖)
从公元到死亡的日子 = 年×365+月×30+日;
排序什么的随便啦(本蒟蒻冒泡)
#include<bits/stdc++.h>
using namespace std;
struct sr{
string name;
int n,y,r;
}xs[120];//结构体,nian年,yue月,ri日。一目了然的变量名,哈哈
int main(void){
int k,i,j,temp1,temp2;
cin>>k;
for(i = 0;i<k;i++)cin>>xs[i].name>>xs[i].n>>xs[i].y>>xs[i].r;//输入每个人的信息
for(i = 0;i<k;i++){
for(j = 0;j<k;j++){
temp1 = xs[i].n*365+xs[i].y*30+xs[i].r;
temp2 = xs[j].n*365+xs[j].y*30+xs[j].r;
if(temp1<=temp2)swap(xs[i],xs[j]);
}//蒟蒻的冒泡排序
}
for(i = 0;i<k;i++)cout<<xs[i].name<<endl;//输出就好了
return 0;
}