PAT乙级1028 人口普查 (20 分)

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT乙级1028 人口普查 (20 分)相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
题目地址

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
struct student
{
	int a,b,c;
	string name;
}stu;
bool cmp(student a,student b)
{
	if(a.a==b.a)
	{
		if(a.b==b.b)
			return a.c>b.c; 
		return a.b>b.b;
	}
	return a.a>b.a;
}
int main(void)
{
	int n; cin>>n;
	vector<student> ve; 
	for(int i=0;i<n;i++)
	{
		string name,s; cin>>name>>s;
		stu.name=name;
		int a,b,c;
		a=stoi(s.substr(0,4));
		b=stoi(s.substr(5,2));
		c=stoi(s.substr(8,2));
		stu.a=a,stu.b=b,stu.c=c;
		if(a>2014) continue;//没出生的
		if(a==2014&&b>9) continue;
		if(a==2014&&b==9&&c>6) continue;
		if(a<1814) continue;//太年长的
		if(a==1814&&b<9)  continue;
		if(a==1814&&b==9&&c<6) continue;
		ve.push_back(stu);
	}
	sort(ve.begin(),ve.end(),cmp);
	cout<<ve.size();
    if(ve.size()) cout<<" "<<ve[ve.size()-1].name<<" "<<ve[0].name<<endl;
	return 0;
}
#include<cstdio>
#include<iostream>
using namespace std;
int main(void)
{
	int n; cin>>n;
	string name,day;
	string s1,id1="00000000";
	string s2,id2="99999999";
	int k=0;
	for(int i=0;i<n;i++)
	{
		cin>>name>>day;
		string temp;
		for(int j=0;j<day.size();j++)
		{
			if(day[j]>='0'&&day[j]<='9') temp+=day[j]; 
		}
		if(temp>"20140906") continue;
		if(temp<"18140906") continue;
		if(temp>id1) s1=name,id1=temp;
		if(temp<id2) s2=name,id2=temp;
		k++;
	}
    cout<<k;
    if(k) cout<<" "<<s2<<" "<<s1<<endl;
	return 0;
}

以上是关于PAT乙级1028 人口普查 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT——乙级1028

1028.人口普查(PAT)

1028 人口普查 (20 分)

1028 人口普查 (20 分)

1028 人口普查 (20 分)

1028 人口普查 (20 分)