【PTA】 PAT乙级真题,95题(C++,AC代码)

PAT乙级真题95题

标号标题分数通过数提交数通过率
1001害死人不偿命的(3n+1)猜想151095583091190.35
1002写出这个数20717392815630.25
1003我要通过!20374361586230.24
1004成绩排名20524301659740.32
1005继续(3n+1)猜想25355241370880.26
1006换个格式输出整数1545779915940.50
1007素数对猜想20382571575870.24
1008数组元素循环右移问题20422571315680.32
1009说反话20472571353980.35
1010一元多项式求导25359851667520.22
1011A+B 和 C15470851563540.30
1012数字分类20310861399790.22
1013数素数20326021554660.21
1014福尔摩斯的约会20254331573740.16
1015德才论25222601034590.22
1016部分A+B1535450718770.49
1017A除以B2024201846490.29
1018锤子剪刀布2024286891910.27
1019数字黑洞2023712990790.24
1020月饼2524137908670.27
1021个位数统计1527922651800.43
1022D进制的A+B2028782811410.35
1023组个最小数2026597544750.49
1024科学计数法2016829633480.27
1025反转链表2512802648530.20
1026程序运行时间1526858743560.36
1027打印沙漏2020149618110.33
1028人口普查2018830978960.19
1029旧键盘2019039545010.35
1030完美数列25183201059520.17
1031查验身份证1521205715940.30
1032挖掘机技术哪家强20303201108710.27
1033旧键盘打字2016789928610.18
1034有理数四则运算2010576424220.25
1035插入与归并259003320430.28
1036跟奥巴马一起编程1526116617820.42
1037在霍格沃茨找零钱2016929359560.47
1038统计同成绩学生2016690570850.29
1039到底买不买2015806357690.44
1040有几个PAT2514477534460.27
1041考试座位号1520440430610.47
1042字符统计2016762402680.42
1043输出PATest2015862293320.54
1044火星数字2011421442140.26
1045快速排序2511554626320.18
1046划拳1520960377510.56
1047编程团体赛2014519250920.58
1048数字加密2013900609940.23
1049数列的片段和2012190586030.21
1050螺旋矩阵258503362270.23
1051复数乘法1510987456350.24
1052卖个萌208348321240.26
1053住房空置率209566297400.32
1054求平均值209621413490.23
1055集体照257208210830.34
1056组合数的和1513031203300.64
1057数零壹209869263260.37
1058选择题207314210490.35
1059C语言竞赛208562306130.28
1060爱丁顿数258906423850.21
1061判断题1512194208180.59
1062最简分数208089387220.21
1063计算谱半径208812151000.58
1064朋友数209903221990.45
1065单身狗259010352570.26
1066图像过滤1510482295380.35
1067试密码209650513160.19
1068万绿丛中一点红206399319710.20
1069微博转发抽奖208149249700.33
1070结绳258102185230.44
1071小赌怡情159866334270.30
1072开学寄语208140224610.36
1073多选题常见计分法204868130950.37
1074宇宙无敌加法器206160276330.22
1075链表元素分类255060177730.28
1076Wifi密码1512424250330.50
1077互评成绩计算208397199860.42
1078字符串压缩与解压207723237500.33
1079延迟的回文数206654223870.30
1080MOOC期终成绩256550240970.27
1081检查密码1510744430200.25
1082射击比赛209013203340.44
1083是否存在相等的差208804219190.40
1084外观数列207137173930.41
1085PAT单位排行256512299720.22
1086就不告诉你1512075384390.31
1087有多少不同的值2010210213450.48
1088三人行208082360470.22
1089狼人杀-简单版205719121640.47
1090危险品装箱257491235490.32
1091N-自守数1510640253290.42
1092最好吃的月饼208536241220.35
1093字符串A+B2010739261590.41
1094谷歌的招聘209544436520.22
1095解码PAT准考证256117320900.19
1001
#include<iostream> 
using namespace std;
int main(){
	int n;  cin>>n;
	int cnt = 0;
	while(n != 1){
		if(n%2==0)n = n/2;
		else n = (3*n+1)/2;
		cnt++;
	}
	cout<<cnt<<'\n';
	return 0;
}
1002
#include<iostream>
#include<string>
using namespace std;
string zm(int x){
	if(x == 0)return "ling";
	if(x == 1)return "yi";
	if(x == 2)return "er";
	if(x == 3)return "san";
	if(x == 4)return "si";
	if(x == 5)return "wu";
	if(x == 6)return "liu";
	if(x == 7)return "qi";
	if(x == 8)return "ba";
	if(x == 9)return "jiu";
}
int main(){
	string s;
	cin>>s;
	int ans = 0;
	for(int i = 0; i < s.size(); i++){
		ans += s[i]-'0';
	}
	if(ans >= 100){
		int x = ans/100;
		int y = ans/10%10;
		int z = ans%10;
		cout<<zm(x)<<' '<<zm(y)<<" "<<zm(z)<<'\n';
	}else if(ans >= 10){
		int x = ans%10;
		int y = ans/10%10;
		cout<<zm(y)<<' '<<zm(x)<<'\n';
	}else{
		cout<<zm(ans)<<'\n';
	}
	return 0;
}

1003
#include<iostream>
#include<cstring>
using namespace std;
int main(){
	int n; cin>>n;
	while(n--){
		string s; cin>>s;
		int m[500], p, t;
		memset(m,0,sizeof(m));
		for(int i = 0; i < s.size(); i++){
			m[s[i]]++;
			if(s[i]=='P')p = i;
			if(s[i]=='T')t = i;
		}
		int size = 0;
		for(int i = 'A'; i < 'z'; i++)if(m[i])size++;
		if(m['P']==1&&m['T']==1&&m['A']!=0&&size==3 &&t-p!=1&&p*(t-p-1)==s.size()-t-1)
			cout<<"YES\n";
		else 
			cout<<"NO\n";
	}
	return 0;
}

1004
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

struct stu{
	string name, id;
	int score;
	bool operator < (stu b){
		return score<b.score;
	}
}minn, maxx, t;

int main(){
	int n;  cin>>n;
	maxx.score = -1e9+10, minn.score = 1e9+10;
	for(int i = 1; i <= n; i++){
		cin>>t.name>>t.id>>t.score;
		if(t.score>maxx.score){
			maxx = t;
		}
		if(t.score<minn.score){
			minn = t;
		}
	}
	cout<<maxx.name<<" "<<maxx.id<<'\n';
	cout<<minn.name<<" "<<minn.id<<'\n';
	return 0;
}

1005
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

const int maxn = 11000;
int a[maxn], b[maxn];

const bool cmp(int a, int b){return a>b;}

void tag(int x){
	while(x!=1){
		if(x%2==0)b[x=x/2] = 1;
		else b[x=(3*x+1)/2] = 1;
	}
}

int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		cin>>a[i];  tag(a[i]);
	}
	
	vector<int>ans;
	sort(a+1,a+n+1,cmp);
	for(int i = 1; i <= n; i++)
		if(!b[a[i]])ans.push_back(a[i]);
	for(int i = 0; i < ans.size()-1; i++)
		cout<<ans[i]<<' ';
	cout<<ans[ans.size()-1];
	return 0;
}

1006
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
	int n;  cin>>n;
	int a[3] = {0}, k=0;
	while(n!=0){
		a[k++]=n%10;
		n /= 10;
	}
	for(int i = 0; i < a[2]; i++)cout<<"B";
	for(int i = 0; i < a[1]; i++)cout<<"S";
	for(int i = 0; i < a[0]; i++)cout<<i+1;
	return 0;
}

1007
//求1-n有几对差为2的素数,直接枚举
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int isprime(int x){
	for(int i = 2; i*i<=x; i++)
		if(x%i==0)return false;
	return true;
}
int main(){
	int n;  cin>>n;
	int ans = 0;
	for(int i = 5; i <= n; i++)
		if(isprime(i) && isprime(i-2))
			ans++;
	cout<<ans<<"\n";
	return 0;
}

1008
//将长为n的数组右移m位,直接枚举
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[110];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= n; i++)cin>>a[i];
	int t = n-m%n;
	vector<int>ans;
	for(int i = t+1; i <= n; i++)ans.push_back(a[i]);
	for(int i = 1; i <= t; i++)ans.push_back(a[i]);
	for(int i = 0; i < ans.size(); i++){
		if(i!=0)cout<<" ";
		cout<<ans[i];
	}
	return 0;
}

1009
//将长为n的数组右移m位,直接枚举
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
stack<string>st;
int main(){
	string s;
	while(cin>>s)st.push(s);
	while(st.size()){
		cout<<st.top();  st.pop();
		if(st.size()!=0)cout<<" ";
	}
	return 0;
}

1010
//将长为n的数组右移m位,直接枚举
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
stack<string>st;
int main(){
	int a, b, ok = 0;
	while(cin>>a>>b){
		if(b!=0){
			if(ok==1)cout<<" ";
			cout<<a*b<<" "<<b-1;
			ok = 1;
		}
	}
	if(ok==0)cout<<"0 0\n";
	return 0;
}

1011
//将长为n的数组右移m位,直接枚举
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
stack<string>st;
int main(){
	int T;  cin>>T;
	for(int i = 1; i <= T; i++){
		LL a, b, c;  cin>>a>>b>>c;
		if(a+b>c)cout<<"Case #"<<i<<": true\n";
		else cout<<"Case #"<<i<<": false\n";
	}
	return 0;
}

1012
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[1010], A[10];
int main(){
	int n;  cin>>n;
	int op = 1, cnt=0, a2=0;
	for(int i = 1; i <= n; i++){
		cin>>a[i];
		if(a[i]%5==0 && a[i]%2==0)A[1]+=a[i];
		if(a[i]%5==1){A[2] += op*a[i]; op=-op; a2=1;}
		if(a[i]%5==2)A[3]++;
		if(a[i]%5==3){A[4]+=a[i]; cnt++;}
		if(a[i]%5==4)A[5] = max(A[5],a[i]);
	}
	for(int i = 1; i <= 5; i++){
		if(i!=1)cout<<" ";
		if(A[i]==0){
			if(i!=2)cout<<"N";
			else{
				if(a2==0)cout<<"N";
				else cout<<A[2];
			}
		}
		else{
			if(i==4)printf("%.1f",A[4]*1.0/cnt);
			else cout<<A[i];
		}
	}
	return 0;
}

1013
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6;
bool isprime[maxn];
int prime[maxn];
int main(){
  ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  int m,n; cin>>m>>n;
  memset(isprime,1,sizeof(isprime));
  isprime[0]=isprime[1]=0;
  int cnt=1;
  for(int i=2; i<maxn; i++){
    if(isprime[i]){
      prime[cnt++]=i;
      for(int j=2*i; j<maxn; j+=i){
        isprime[j]=0;
      }
    }
  }
  cnt=0;
  for(int i=m; i<=n; i++){
    cout<<prime[i];
    cnt++;
	if(i==n)break;
    if(cnt==10){
      cout<<endl; cnt=0;
    } else {
      cout<<" ";
    }
  }
  return 0;
}
1014
#include<bits/stdc++.h>
using namespace std;
string days[] = {"MON","TUE","WED","THU","FRI","SAT", "SUN"};
int main(){
	string a, b, c, d;
	cin>>a>>b>>c>>d;
	int len = min(a.size(),b.size());
	
	int ok = 0;
	for(int i = 0; i < len; i++){
		if(ok == 0){
			if(a[i]==b[i] && (a[i]>='A'&&a[i]<='N')){
				cout<<days[a[i]-'A']<<" ";
				ok = 1;
			}
		}else{
			if(a[i]==b[i] && (isdigit(a[i])||(a[i]>='A'&&a[i]<='N'))){
				if(isdigit(a[i])){
					printf("%02d:",a[i]-'0');
				}else{
					//cout<<a[i]<<" ";
					printf("%02d:",a[i]-'A'+10);
				}
				break;
			}
		}
	}
	
	len = min(c.size(), d.size());
	for(int i = 0; i < len; i++){
		if(c[i]==d[i] && isalpha(c[i])){
			printf("%02d\n",i);
		}
	}
	return 0;
}


1015
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
struct node{int id, de, cai;};
bool cmp(node x, node y){
	if((x.de+x.cai)!=(y.de+y.cai))return (x.de+x.cai)>(y.de+y.cai);
	if(x.de!=y.de)return x.de>y.de;
	return x.id<y.id;
}
int main(){
	int n, L, H;  cin>>n>>L>>H;
	node t;  vector<node>vc[5];
	int sum = n;
	for(int i = 1; i <= n; i++){
		cin>>t.id>>t.de>>t.cai;
		if(t.de<L || t.cai<L)sum--;
		else if(t.de>=H && t.cai>=H)vc[1].push_back(t);
		else if(t.de>=H)vc[2].push_back(t);
		else if(t.de<H && t.cai<H && t.de>=t.cai)vc[3].push_back(t);
		else vc[4].push_back(t);
	}
	cout<<sum<<"\n";
	for(int i = 1; i <= 4; i++){
		sort(vc[i].begin(),vc[i].end(),cmp);
		for(int j = 0; j < vc[i].size(); j++){
			cout<<vc[i][j].id<<" "<<vc[i][j].de<<" "<<vc[i][j].cai<<"\n";
		}
	}
	return 0;
}

1016
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
	LL a, da, b, db;
	cin>>a>>da>>b>>db;
	LL aa = 0, bb = 0;
	while(a){
		if(a%10==da)aa = aa*10+da;
		a /= 10;
	}
	while(b){
		if(b%10==db)bb = bb*10+db;
		b /= 10;
	}
	cout<<aa+bb<<"\n";
	return 0;
}

1017
//每一位做除法
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
	string a; int b;  cin>>a>>b;
	int div = (a[0]-'0')/b, mod = (a[0]-'0')%b;
	if(div!=0 || a.size()==1)cout<<div;
	for(int i = 1; i < a.size(); i++){
		div = (a[i]-'0'+mod*10)/b;
		cout<<div;
		mod = (a[i]-'0'+mod*10)%b;
	}
	cout<<" "<<mod;
	return 0;
}

1018
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;  cin>>n;
	int a=0, b=0, z1[30]={0}, z2[30]={0};
	for(int i = 1; i <= n; i++){
		char x, y;  cin>>x>>y;
		if(x==y)continue;
		if(x=='C'&&y=='J' || x=='J'&&y=='B' || x=='B'&&y=='C'){
			a++;  z1[x-'A']++;
		}else{
			b++;  z2[y-'A']++;
		}
	}
	cout<<a<<" "<<n-a-b<<" "<<b<<"\n";
	cout<<b<<" "<<n-a-b<<" "<<a<<"\n";
	int xx = 1, yy = 1; //WA1,2,4
	for(int i = 0; i < 26; i++){
		if(z1[i]>z1[xx])xx = i;
		if(z2[i]>z2[yy])yy = i;
	}
	cout<<(char)(xx+'A')<<" "<<(char)(yy+'A')<<"\n";
	return 0;
}


1019
#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;  cin>>s;
	if(s.size()!=4)s = string(4-s.size(),'0')+s;
	do{
		string b = s;
		sort(b.begin(),b.end());
		string a = b;
		reverse(a.begin(),a.end());
		string c = to_string(stoi(a)-stoi(b));
		if(c.size()!=4)c = string(4-c.size(),'0')+c;
		cout<<a<<" - "<<b<<" = "<<c<<"\n";
		s = c;
	}while(s != "6174" && s!="0000");
	return 0;
}


1020
#include<bits/stdc++.h>
using namespace std;

struct yuebin{
	double a;
	double b;
	double c;//
}y[1010];

int cmp(yuebin a1, yuebin a2){
	return a1.c>a2.c;
}

int main(){
	int n, d;
	cin>>n;
	cin>>d;
	for(int i=1; i<=n; i++){
		cin>>y[i].a;
	}
	for(int i=1; i<=n; i++){
		cin>>y[i].b;
		y[i].c = y[i].b/y[i].a;
	}
	
	sort(y+1,y+n+1,cmp);
	double sum=0;
	for(int i=1; i<=n; i++){
		if(y[i].a<=d){
			sum+=y[i].b;
			d -= y[i].a;
		} else {
			sum += d*y[i].c;
			break;
		}
	}
	printf("%.2lf\n",sum);
	//printf(".2lf\n", sum);
	return 0;
}

1021
#include<bits/stdc++.h>
using namespace std;
int a[110];
int main(){
	string s;  cin>>s;
	for(int i = 0; i < s.size(); i++){
		a[s[i]-'0']++;
	}
	for(int i = 0; i <= 9; i++){
		if(a[i]){
			cout<<i<<":"<<a[i]<<"\n";
		}
	}
	return 0;
}

1022
//直接加起来转d进制,除d取余
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a, b, d;  cin>>a>>b>>d;
	int t = a+b;
	if(t==0){cout<<0; return 0;}
	vector<int>vc;
	while(t!=0){
		vc.push_back(t%d);
		t /= d;
	}
	for(int i = vc.size()-1; i >= 0; i--)
		cout<<vc[i];
	return 0;
}



1023
//找出1-9最小的输出,剩下的从0排到9就行
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[10], t=0;
	for(int i = 0; i < 10; i++){
		cin>>a[i];
		if(!t && i && a[i]){
			cout<<i; t = 1; a[i]--;
		}
	}
	for(int i = 0; i < 10; i++)
		for(int j = 0; j < a[i]; j++)
			cout<<i;
	return 0;
}



1024
#include <bits/stdc++.h>
using namespace std;
int main(){
	string s; getline(cin,s);
	char op[3]; int cnt=0; int p=0;
	for(int i=0; i<s.size(); i++){
		if(s[i]=='+'||s[i]=='-'){
			op[cnt++]=s[i]; 
			if(cnt==2){
				p=i; break;
			}
		}
	}
	if(op[0]=='-') cout<<"-";
	vector<int>ve;
	for(int i=0; i<p; i++){
		if(isdigit(s[i])){
			ve.push_back(s[i]-'0');
		}
	}
	//cout<<p+1<<" "<<s.size()-p<<"\n";
	//cout<<s.substr(p+1,s.size()-p)<<"\n";
	//return 0;
	int num=stoi(s.substr(p+1,s.size()-p));
	//cout<<num<<"\n";
	if(op[1]=='+'){
		int x = num+1-(int)ve.size();
		
		for(int i=0; i<ve.size(); i++){
			//if(x<0 && i-x==ve.size())cout<<".";
			cout<<ve[i];
		}
		//cout<<"\n"<<num+1-(int)ve.size()<<"\n";
		//cout<<string(num+1-(int)ve.size(),'0');
		if(x>0)cout<<string(x,'0');
	} else {
		cout<<"0.";
		for(int i=1; i<num; i++) cout<<0;
		for(int i=0; i<ve.size(); i++) cout<<ve[i];
	}
	return 0;
}
1025
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int begin, n, k;
	cin>>begin>>n>>k;
	for(int i = 1; i <= n; i++){
		int x;  cin>>x;  li[x].address = x;
		cin>>li[x].data>>li[x].next;
	}
	int cnt = 0;
	vector<node>vc, ans;
	for(int i = begin; i != -1; i=li[i].next){
		vc.push_back(li[i]);
		cnt++;
		if(cnt==k){
			reverse(vc.begin(),vc.end());
			ans.insert(ans.end(),vc.begin(),vc.end());
			vc.clear();
			cnt = 0;
		}
	}
	ans.insert(ans.end(),vc.begin(),vc.end());
	for(int i = 0; i < ans.size(); i++){
		printf("%05d %d ", ans[i].address,ans[i].data);
		if(i!=ans.size()-1)printf("%05d\n", ans[i+1].address);
		else printf("-1\n");
	}
	return 0;
}



1026
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a, b;   cin>>a>>b;
	int n = ((b-a)+50)/100;//四舍五入
	printf("%02d:%02d:%02d",n/3600, n%3600/60, n%3600%60);
	return 0;
}



1027
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;  char ch;
	cin>>n>>ch;
	int h = sqrt((n+1)/2);
	for(int i = h; i >= 1; i--){
		for(int j = 1; j <= h-i; j++)cout<<" ";
		for(int j = 1; j <= 2*i-1; j++)cout<<ch;
		cout<<"\n";
	}
	for(int i = 2; i <= h; i++){
		for(int j = 1; j <= h-i; j++)cout<<" ";
		for(int j = 1; j <= 2*i-1; j++)cout<<ch;
		cout<<"\n";
	}
	cout<<n+1-2*h*h<<endl;
	return 0;
}

1028
#include<iostream>
using namespace std;
int main(){
	int n, sum=0; cin>>n;
	string old,young,oldnum="2014/09/06", youngnum="1814/09/06";
	while(n--){
		string a, b;
		cin>>a>>b;
		if(b<"1814/09/06" || b>"2014/09/06")continue;
		sum++;
		if(b>=youngnum)young = a, youngnum=b;
		if(b<=oldnum)old=a, oldnum = b;
	}
	if(sum!=0)cout<<sum<<" "<<old<<" "<<young<<"\n";
	else cout<<sum<<"\n";
	return 0;
}

1029
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int vis[1110];
int main(){
	string s1, s2;
	cin>>s1>>s2;
	transform(s1.begin(),s1.end(),s1.begin(),::toupper);
	transform(s2.begin(),s2.end(),s2.begin(),::toupper);
	for(int i = 0; i < s1.size(); i++){
		if(s2.find(s1[i])==string::npos && !vis[s1[i]])
			{ cout<<s1[i]; vis[s1[i]] = 1;}
	}
	return 0;
}

1030
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
int main(){
	LL n, p; cin>>n>>p;
	vector<int>a(n);
	for(int i = 0;i < n; i++)cin>>a[i];
	sort(a.begin(),a.end());
	LL ans = 0;
	for(int i = 0; i < n; i++){
		for(int j = i+ans; j < n; j++){//+ans剪枝
			if(a[j]<=a[i]*p)
				ans = max(ans, (LL)j-i+1);
			else break;
		}
	}
	cout<<ans;
	return 0;
}

1031
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int z[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char m[] = {'1','0','X','9' ,'8' ,'7', '6' ,'5' ,'4' ,'3' ,'2'};
int main(){
	int n; cin>>n;
	int ok = 1;
	while(n--){
		string id;  cin>>id;
		int sum = 0;
		for(int i = 0; i < id.size()-1; i++)
			sum += (id[i]-'0')*z[i];
		if(m[sum%11] != id[id.size()-1]){
			cout<<id<<"\n";
			ok = 0;
		}
	}
	if(ok)cout<<"All passed\n";
	return 0;
}

1032
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
bool cmp(pair<int,int>a,pair<int,int>b){
	return a.second>b.second;
}
int main(){
	int n;  cin>>n;
	map<int,int>mm;
	for(int i = 1; i <= n; i++){
		int a, b; cin>>a>>b;
		mm[a] += b;
	}
	vector<pair<int,int> >v;
	//sort(mm.begin(),mm.end(),cmp);
	for(map<int,int>::iterator it = mm.begin(); it != mm.end(); it++){
		v.push_back(make_pair(it->first,it->second));
		//cout<<it->first<<" "<<it->second<<"\n";
	}
	sort(v.begin(),v.end(),cmp);
	/*
	for(int i = 0; i < v.size(); i++){
		cout<<v[i].first<<" "<<v[i].second<<"\n";
	}
	*/
	cout<<v[0].first<<" "<<v[0].second<<"\n";
	return 0;
}

1033
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(){
	string s1, s2;
	getline(cin,s1);
	getline(cin,s2);
	if(s1.size()==0){cout<<s2; return 0;}
	int ok = 1; if(s1.find('+')!=string::npos)ok = 0;
	//transform(s1.begin(),s1.end(),s1.begin(),::toupper);害怕字符大写影响
	//int kk = 1; 害怕空行影响
	for(int i = 0; i < s2.size(); i++){
		if(s1.find(toupper(s2[i]))!=string::npos)continue;
		if(isupper(s2[i])&&ok==0)continue;
		cout<<s2[i]; // kk = 0;
	}
	//if(kk)cout<<'\n';
	return 0;
}

1034
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

LL gcd(LL a, LL b){
	return b==0?a:gcd(b,a%b);
}
void prin(LL n, LL m){
	if(n*m==0){
		printf("%s",m==0?"Inf":"0");
		return ;
	}
	//int ok = (n*m<0);
	int ok=0;
	if((n<0&&m>0)||(n>0&&m<0))ok = 1;
	if(ok)cout<<"(-";
	
	n = abs(n), m = abs(m);
	LL x = n/m, r = n%m;
	if(x!=0)cout<<x;
	if(r==0){
		if(ok)cout<<")";
		return ;
	}
	if(x!=0)cout<<" ";
	n = r;
	LL t = gcd(n,m);
	n /= t;  m /= t;
	cout<<n<<"/"<<m;
	if(ok)cout<<")";
	
	/*
	if(x>0)cout<<x;
	if(x>0&&r!=0)cout<<" ";
	if(r!=0){
		LL t = gcd(r,m);
		cout<<r/t<<"/"<<m/t;
	}
	
	if(ok)cout<<")";
	*/
}
int main(){
	LL a, b, c, d;
	scanf("%lld/%lld %lld/%lld",&a,&b,&c,&d);
	prin(a,b); cout<<" + "; prin(c,d); cout<<" = "; prin(a*d+b*c,b*d); cout<<"\n";
	prin(a,b); cout<<" - "; prin(c,d); cout<<" = "; prin(a*d-b*c,b*d); cout<<"\n";
	prin(a,b); cout<<" * "; prin(c,d); cout<<" = "; prin(a*c,b*d); cout<<"\n";
	prin(a,b); cout<<" / "; prin(c,d); cout<<" = "; prin(a*d,b*c); cout<<"\n";
	return 0;
}

1035
//1.两个排序不会,磨了一个小时
//2.学习一下神奇的插入排序写法。
//3.几路归并没说,所以枚举。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 110;
int n, a[maxn], b[maxn],c[maxn], ok;

void Merge(int a[]){
	//传说中的归并排序写法,学习了。。。
	//从底部往上,每次局部快排。。。
	for(int i = 1; i <= n; i*=2){
		for(int j = 0; j < n; j+=i){
			if(j+i<=n)sort(a+1+j,a+1+j+i);
			else sort(a+1+j,a+n+1);
		}
		
		//output
		int ok = 1;
		for(int j = 1; j <= n; j++)
			if(a[j]!=b[j]){ok=0;break;}
		if(ok){
			cout<<"Merge Sort\n";
			i *= 2;//手动下一轮排序qwq(亏我之前还全局开关等下一轮)
			for(int j = 0; j < n; j+=i){
				if(j+i<=n)sort(a+j+1,a+j+i+1);
				else sort(a+j+1,a+n+1);
			}
			
			for(int j = 1; j < n; j++)cout<<a[j]<<" ";cout<<a[n];cout<<"\n";
		}
	}
	
	/*
	if(l==r)return ;
	int mid = (l+r)/2;
	
	Merge(l,mid);
	//for(int i = 1; i <= n; i++)cout<<a[i]<<" ";cout<<"\n";
	if(ok){cout<<"Merge Sort\n";for(int i = 1; i <= n; i++)cout<<a[i]<<' '; cout<<"\n";ok=0;}
	ok = 1;
	for(int i = 1; i <= n; i++)
		if(a[i]!=b[i]){ok=0;break;}
	
	Merge(mid+1,r);
	//for(int i = 1; i <= n; i++)cout<<a[i]<<" ";cout<<"\n";
	if(ok){cout<<"Merge Sort\n";for(int i = 1; i <= n; i++)cout<<a[i]<<' '; cout<<"\n";ok=0;}
	ok = 1;
	for(int i = 1; i <= n; i++)
		if(a[i]!=b[i]){ok=0;break;}
	
	int i = l, j = mid+1, k=1;
	int t[110];
	while(i<j && i<=mid && j<=r){
		if(a[i]<a[j])t[k] = a[i++];
		else t[k] = a[j++];
		k++;
	}
	while(i<=mid)t[k++]=a[i++];
	while(j<=r)t[k++]=a[j++];
	
	k = 1;
	//for(int i = 1; i <= n; i++)cout<<a[i]<<" ";cout<<"\n";
	for(int ii=l; ii <= r; ii++)
		a[ii]=t[k++];
	if(ok){cout<<"Merge Sort\n";for(int i = 1; i <= n; i++)cout<<a[i]<<' '; cout<<"\n";ok=0;}
	ok = 1;
	for(int i = 1; i <= n; i++)
		if(a[i]!=b[i]){ok=0;break;}
	
	//for(int i = 1; i <= n; i++)cout<<a[i]<<" ";cout<<"\n";
	*/
}

void swap(int &x, int &y){
	int t = x; x = y, y = t;
}
bool Insert(){
	for(int i = 2; i <= n; i++){
		//害怕!!!插入排序!!!∑(゚Д゚ノ)ノ
		sort(a+1,a+i+1);
		/*
		int tt = a[i], j = i-1;
		for(; j>= 1; j--)
			if(a[j]>a[j+1])swap(a[j+1],a[j]);
		*/
		
		//output
		int ok = 1;
		for(int j = 1; j <= n; j++)
			if(a[j]!=b[j]){ok=0;break;}
		if(ok){
			cout<<"Insertion Sort\n";
			sort(a+1,a+i+2);//......
			for(int j = 1; j < n; j++)cout<<a[j]<<" "; cout<<a[n]<<"\n";
			return true;
		}
		
	}
	return false;
}


int main(){
	cin>>n;
	for(int i = 1; i <= n; i++){cin>>a[i];c[i]=a[i];}
	for(int i = 1; i <= n; i++)cin>>b[i];
	if(!Insert()){//测试点3,可能有两种都有的情况
		//a数组被Insert改掉了,,归并当然算不出来啊卧槽。。。
		Merge(c);
	}
	//for(int i = 1; i <= n; i++)cout<<a[i]<<' ';
	return 0;
}

1036
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n; char ch;  cin>>n>>ch;
	int h = n/2+n%2;
	for(int i = 0; i < n; i++)cout<<ch;  cout<<"\n";
	for(int i = 0; i < h-2; i++){
		cout<<ch;
		for(int j = 0; j < n-2; j++)cout<<" ";
		cout<<ch<<"\n";
	}
	for(int i = 0; i < n; i++)cout<<ch;
	return 0;
}



1037
//直接转换为最小单位后转换回来
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int a, b ,c, m, n, t, x, y, z;
	scanf("%d.%d.%d %d.%d.%d",&a, &b, &c, &m, &n, &t);
	int cc = (a*17*29+b*29+c)-(m*17*29+n*29+t);
	if(cc > 0)cout<<"-";
	if(cc < 0)cc = -cc;
	printf("%d.%d.%d",(cc/29)/17,(cc/29)%17,cc%29);
	return 0;
}



1038
#include<iostream>
using namespace std;
const int maxn = 1e5+10;
int vis[maxn];
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		int x;  cin>>x;  vis[x]++;
	}
	int k;  cin>>k;
	for(int i = 1; i < k; i++){
		int x;  cin>>x;  cout<<vis[x]<<' ';
	}
	int x;  cin>>x;  cout<<vis[x];
	return 0;
}

1039
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int aa[300], bb[300];
int main(){
	string a, b;  cin>>a>>b;
	for(int i = 0; i < a.size(); i++)aa[a[i]]++;
	for(int i = 0; i < b.size(); i++)bb[b[i]]++;
	int ok = 1, cnt = 0;
	for(int i = 0; i < 250; i++){
		if(aa[i]==0 && bb[i]==0)continue;
		if(aa[i]<bb[i]){
			ok = 0;
			cnt += bb[i]-aa[i];
		}
	}
	if(ok==1)cout<<"Yes "<<(int)a.size()-(int)b.size()<<"\n";
	else cout<<"No "<<cnt;
	return 0;
}



1040
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
const int mod = 1000000007;
int p[maxn], a[maxn], t[maxn], at[maxn];
int main(){
	string s;  cin>>s;
	int ans = 0;
	for(int i = s.size()-1; i >= 0; i--){
		p[i] = p[i+1];  a[i] = a[i+1];  t[i] = t[i+1];
		at[i] = at[i+1];
		if(s[i]=='T')t[i]++;
		if(s[i]=='A')at[i] = (at[i]+t[i])%mod;
		if(s[i]=='P'){
			p[i]++;
			ans = (ans+at[i])%mod;
		}
	}
	cout<<ans%mod<<"\n";
	return 0;
}



1041
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1100;
string ha[maxn]; int  ha2[maxn];
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		string a; int b, c;
		cin>>a>>b>>c;
		ha[b] = a;
		ha2[b] = c;
	}
	int q;  cin>>q;
	for(int i = 1; i <= q; i++){
		int x;  cin>>x;
		cout<<ha[x]<<" "<<ha2[x]<<"\n";
	}
	return 0;
}

1042
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
const int mod = 1000000007;
int z[500];
int main(){
	string s;  getline(cin,s);
	char mx=s[0];
	for(int i = 0; i < s.size(); i++){
		if(!isalpha(s[i]))continue;
		s[i] = tolower(s[i]);
		z[s[i]]++;
		if(z[s[i]]>z[mx])mx=s[i];
		else if(z[s[i]]==z[mx] && s[i]<mx)mx=s[i];
	}
	cout<<mx<<" "<<z[mx];
	return 0;
}



1043
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
const int mod = 1000000007;
int z[500];
int main(){
	string s;  getline(cin,s);
	for(int i = 0; i < s.size(); i++)z[s[i]]++;
	while(z['P']||z['A']||z['T']||z['e']||z['s']||z['t']){
		if(z['P']){ putchar('P'); z['P']--; }
		if(z['A']){ putchar('A'); z['A']--; }
		if(z['T']){ putchar('T'); z['T']--; }
		if(z['e']){ putchar('e'); z['e']--; }
		if(z['s']){ putchar('s'); z['s']--; }
		if(z['t']){ putchar('t'); z['t']--; }
	}
	return 0;
}



1044
#include<iostream>
#include<string>
#include<cstring>
using namespace std;

const string a[] = {"tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
const string b[] = {"tret","tam","hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};

string Tohuo(string s){
	int t = 0;
	for(int i = 0; i < s.size();i++)
		t = t*10+s[i]-'0';
	int x = t/13, y = t%13;
	if(t==0)return a[0];
	if(x==0)return a[y];
	if(x!=0 && y==0)return b[x];
	return b[x]+" "+a[y];
}

int todi(string s){
	string x = s.substr(0,3), y;
	if(s.size()>3){
		y = s.substr(4,3);
		int t1 = 0, t2 = 0;
		for(int i = 0; i < 13; i++)
			if(b[i]==x){t1 = i;break;}
		for(int i = 0; i < 13; i++)
			if(a[i]==y){t2 = i; break;}
		return t1*13+t2;
	}else{
		int ans = 0, ok = 1;
		for(int i = 0; i < 13; i++)
			if(a[i]==x){ans = i; ok = 0; break;}
		if(!ok)return ans;
		for(int i = 0; i < 13; i++)
			if(b[i]==x){ans = i; break;}
		return ans*13;
	}
}

int main(){
	int n;  cin>>n;  cin.get();
	for(int i = 1; i <= n; i++){
		string s;  getline(cin,s);
		if(isdigit(s[0]))cout<<Tohuo(s)<<'\n';
		else cout<<todi(s)<<'\n';
	}
	return 0;
}

1045
//测试点2,没有主元素,要输出的格式为: 0\n\n     !!!!!!!!
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
const int inf = 1e9+10;
int a[maxn], mi[maxn], mx[maxn];
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		cin>>a[i];
		mx[i] = max(a[i],mx[i-1]);
		mi[i] = inf;
	}
	mi[n+1] = inf;
	for(int i = n; i >= 1; i--){
		mi[i] = min(mi[i+1], a[i]);
	}
	int ans = 0;
	vector<int>vc;
	for(int i = 1; i <= n; i++){
		//cout<<i<<" "<<a[i]<<" "<<mx[i-1]<<" "<<mi[i+1]<<"\n";
		if(a[i]>mx[i-1] && a[i]<mi[i+1]){
			ans++;
			vc.push_back(a[i]);
		}
	}
	cout<<ans<<"\n";
	if(ans==0)cout<<"\n";
	for(int i = 0; i < vc.size(); i++){
		if(i!=0)cout<<" ";
		cout<<vc[i];
	}
	return 0;
}



1046
#include<bits/stdc++.h>
using namespace std;

int main(){
	int n; cin>>n;
	int A = 0, B = 0;
	for(int i = 1; i <= n; i++){
		int a, b, c, d;
		cin>>a>>b>>c>>d;
		int cc = 0;
		if(b==a+c)cc++;
		if(d==a+c)cc--;
		if(cc>0)B++;
		if(cc<0)A++;
	}
	cout<<A<<" "<<B;
	return 0;
}

1047
#include<iostream>
#include<string>
using namespace std;
int a[1010];
int id(string x){
	int ans = 0;
	for(int i = 0; i < x.size(); i++){
		if(x[i]=='-')break;
		ans = ans*10+x[i]-'0';
	}
	return ans;
}
int main(){
	int n; cin>>n;
	string s; int sc;
	for(int i = 1; i <= n; i++){
		cin>>s>>sc;
		a[id(s)]+=sc;
	}
	int an1=0, an2=0;
	for(int i = 1; i <= 1010; i++){
		if(a[i]>an2){
			an1 = i; an2 = a[i];
		}
	}
	cout<<an1<<' '<<an2<<'\n';
	return 0;
}

1048
#include<bits/stdc++.h>
using namespace std;
int main(){
	string a, b;  cin>>a>>b;
	int d = a.size()-b.size();
	if(d>0)b.insert(0,string(d,'0'));
	if(d<0)a.insert(0,string(-d,'0'));
	string s = "0123456789JQK", c;
	for(int i = a.size()-1, w=1; i >= 0; i--, w++){
		if(w%2==1){
			c += s[(a[i]-'0'+b[i]-'0')%13];
		}else{
			int t = b[i]-a[i];
			if(t < 0)t += 10;
			c += s[t];
		}
	}
	reverse(c.begin(),c.end());
	cout<<c;
	return 0;
}

1049
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;  cin>>n;
	long long ans = 0;//精度bug
	for(int i = 1; i <= n; i++){
		double x;  cin>>x;
		ans += (long long)(x*1000)*i*(n-i+1);//起点*终点,i*(n-i+1)
	}
	printf("%.2lf",ans/1000.0);
	return 0;
}

1050
//Tests7:9973, 数组开小了,n属于[0,100]即可
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn], mp[10010][110];
int main(){
	ios::sync_with_stdio(false);
	int N;  scanf("%d", &N);
	for(int i = 1; i <= N; i++)scanf("%d", &a[i]);
	sort(a+1,a+N+1);
	int n = sqrt(N);
	while(n>1 && N%n!=0)n--;
	int m = N/n;
	int x = 1, y = 1;
	mp[x][y] = a[N--];
	while(N >= 1){
		while(y+1<=n && !mp[x][y+1])mp[x][y+1] = a[N--], y++;
		while(x+1<=m && !mp[x+1][y])mp[x+1][y] = a[N--], x++;
		while(y-1>=1 && !mp[x][y-1])mp[x][y-1] = a[N--], y--;
		while(x-1>=1 && !mp[x-1][y])mp[x-1][y] = a[N--], x--;
	}
	for(int i = 1; i <= m; i++){
		for(int j = 1; j <= n; j++){
			if(j!=1)putchar(' ');
			printf("%d",mp[i][j]);
		}
		putchar('\n');
	}
	return 0;
}

1051
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int main(){
	double r1, p1, r2, p2;
	cin>>r1>>p1>>r2>>p2;
	double r3 = r1*r2*cos(p1)*cos(p2)-r1*r2*sin(p1)*sin(p2);
	double p3 = r1*r2*cos(p1)*sin(p2)+r1*r2*sin(p1)*cos(p2);
	if(r3+0.005>=0 && r3<0)printf("0.00");
	else printf("%.2lf",r3);
	if(p3 >= 0)printf("+%.2lfi", p3);
	else if(p3+0.005>=0 && p3<0)printf("+0.00i");
	else printf("%.2lfi",p3);
	return 0;
}

1052
//Tests7:9973, 数组开小了,n属于[0,100]即可
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int main(){
	string s, y, k;
	getline(cin,s); getline(cin,y); getline(cin,k);
	vector<string>ss, yy, kk;
	int t = 0;
	for(int i = 0; i < s.size(); i++){
		if(s[i]=='[')t = i;
		else if(s[i]==']')ss.push_back(s.substr(t+1,i-t-1));
	}
	t = 0;
	for(int i = 0; i < y.size(); i++){
		if(y[i]=='[')t = i;
		else if(y[i]==']')yy.push_back(y.substr(t+1,i-t-1));
	}
	t = 0;
	for(int i = 0; i < k.size(); i++){
		if(k[i]=='[')t = i;
		else if(k[i]==']')kk.push_back(k.substr(t+1,i-t-1));
	}
	//cout<<ss.size()<<" "<<yy.size()<<" "<<kk.size();
	//for(string x:yy)cout<<x<<"\n";
	//return 0;
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		int a, b, c, d, e;  cin>>a>>b>>c>>d>>e;
		if(a>ss.size() || e>ss.size() || b>yy.size()||d>yy.size()||c>kk.size()||a<1||b<1||c<1||d<1||e<1)cout<<"Are you kidding me? @\\/@"<<endl;
		else cout<<ss[a-1]<<"("<<yy[b-1]<<kk[c-1]<<yy[d-1]<<")"<<ss[e-1]<<"\n";
	}
	return 0;
}

1053
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5+10;
int main(){
	int n; double e; int d;  cin>>n>>e>>d;
	int may=0, must = 0;
	for(int i = 1; i <= n; i++){
		int k;  cin>>k;
		int cnt = 0;
		for(int j = 1; j <= k; j++){
			double t;  cin>>t;
			if(t<e)cnt++;
		}
		if(cnt > k/2){
			if(k>d)must++;
			else may++;
		}
	}
	printf("%.1lf%% %.1lf%%", may*1.0/n*100, must*1.0/n*100);
	return 0;
}


1054
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5+10;
bool check(string s){
	int ok = 0, pos;
	for(int i = 0; i < s.size(); i++){
		if(!isdigit(s[i])&&s[i]!='.'&&s[i]!='-')return 0;
		if(s[i]=='-' && i!=0)return 0;
		if(s[i]=='.'){
			ok++;  pos = i;
			if(ok>1)return 0;
		}
	}
	if(ok==1 && pos<s.size()-3)return 0;
	if(stod(s)>1000.0 || stod(s)<-1000.0)return 0;
	return 1;
}
int main(){
	int n;  cin>>n;
	int cnt = 0; double sum = 0;
	for(int i = 1; i <= n; i++){
		string s;  cin>>s;
		if(!check(s))cout<<"ERROR: "<<s<<" is not a legal number\n";
		else{
			cnt++;
			sum += stod(s);
		}
	}
	if(cnt==0)printf("The average of 0 numbers is Undefined");
	else if(cnt==1)printf("The average of %d number is %.2lf",cnt,sum);
	else printf("The average of %d numbers is %.2lf", cnt, sum/cnt);
	return 0;
}
1055
//排队:偶数序列的倒序加上奇数序列42135
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct node{string name; int hei;}a[maxn];
bool cmp(node a, node b){return a.hei!=b.hei?a.hei>b.hei:a.name<b.name;}
void paidui(int cur, int len){
	queue<string>q;
	stack<string>s;
	for(int i = cur; i < cur+len; i++){
		if((i-cur)%2==1)s.push(a[i].name);
		else q.push(a[i].name);
	}
	while(s.size()){
		cout<<s.top()<<" ";  s.pop();
	}
	while(q.size()){
		cout<<q.front(); q.pop();
		if(q.size()!=0)cout<<" ";
	}
	cout<<"\n";
}
int main(){
	int n, k;  cin>>n>>k;
	for(int i = 1; i <= n; i++)
		cin>>a[i].name>>a[i].hei;
	sort(a+1,a+n+1,cmp);
	paidui(1,n%k+n/k);
	for(int i = 1; i < k; i++)
		paidui(n%k+n/k*i+1,n/k);
	return 0;
}



1056
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int main(){
	int n, sum = 0;
	cin>>n;
	for(int i = 1; i <= n; i++){
		int t;  cin>>t;
		sum += (t*10+t)*(n-1);
	}
	cout<<sum<<"\n";
	return 0;
}



1057
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int main(){
	string s;  getline(cin,s);
	int sum = 0;
	for(int i = 0; i < s.size(); i++){
		if(!isalpha(s[i]))continue;
		s[i] = tolower(s[i]);
		sum += s[i]-'a'+1;
	}
	int z = 0, y = 0;
	while(sum){
		if(sum&1==1)y++;
		else z++;
		sum >>= 1;
	}
	cout<<z<<" "<<y<<"\n";
	return 0;
}



1058
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int sc[110]; string as[110];
int cnt[110];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= m; i++){
		int x,y; cin>>sc[i]>>x>>y;
		for(int j = 1; j <= y; j++){
			char ch;  cin>>ch;
			as[i] = as[i]+ch;
		}
	}
	getchar();
	int mx = 0;
	for(int i = 1; i <= n; i++){
		int fen = 0;
		for(int j = 1; j <= m; j++){
			getchar();
			int kk;  cin>>kk;
			string tmp="";
			for(int k = 1; k <= kk; k++){
				char ch;  cin>>ch;
				tmp += ch;
			}
			if(tmp==as[j])fen+=sc[j];
			else{
				cnt[j]++;
				if(cnt[j]>mx)mx = cnt[j];
			}
			getchar(); getchar();
		}
		cout<<fen<<"\n";
	}
	if(mx==0){
		cout<<"Too simple\n";
		return 0;
	}
	cout<<mx;
	for(int i = 1; i <= m; i++){
		if(cnt[i]==mx){
			cout<<" "<<i;
		}
	}
	return 0;
}



1059
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int rk[maxn], vis[maxn];
bool isprime(int n){
	for(int i = 2; i*i <= n; i++)
		if(n%i==0)return 0;
	return 1;
}
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		int x;  cin>>x;  rk[x] = i;
	}
	int T;  cin>>T;
	while(T--){
		int x;  cin>>x;
		if(!rk[x]){printf("%04d: Are you kidding?\n",x);continue;}
		if(vis[x]){printf("%04d: Checked\n",x);continue;}
		vis[x] = 1;
		if(rk[x]==1)printf("%04d: Mystery Award\n", x);
		else if(isprime(rk[x]))printf("%04d: Minion\n", x);
		else printf("%04d: Chocolate\n", x);
	}
	return 0;
}



1060
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
bool cmp(int x, int y){return x>y;}
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++)cin>>a[i];
	sort(a+1,a+n+1,cmp);
	int i;
	for(i = 1; i <= n; i++)
		if(i>=a[i])break;
	cout<<i-1;
	return 0;
}



1061
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int sc[110], as[110];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= m; i++)cin>>sc[i];
	for(int i = 1; i <= m; i++)cin>>as[i];
	for(int i = 1; i <= n; i++){
		int cnt = 0;
		for(int j = 1; j <= m; j++){
			int x;  cin>>x;
			if(x==as[j])cnt += sc[j];
		}
		cout<<cnt<<"\n";
	}
	return 0;
}



1062
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int gcd(int a, int b){return !b?a:gcd(b,a%b);}
int main(){
	int n1, m1, n2, m2, k;
	scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);
	if(n1*m2>n2*m1){swap(n1,n2);swap(m1,m2);}//n1/m1<n2/m2
	int cnt = 1, ok = 0;
	while(n1*k>=m1*cnt)cnt++;//n1/m1<cnt/k
	while(n1*k<m1*cnt && m2*cnt<n2*k){//cnt/k<n2/m2
		if(gcd(cnt,k)==1){
			if(ok==1)putchar(' ');
			printf("%d/%d",cnt,k);
			ok = 1;
		}
		cnt++;
	}
	return 0;
}



1063
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int gcd(int a, int b){return !b?a:gcd(b,a%b);}
int main(){
	int n;  cin>>n;
	double mx = 0;
	for(int i = 1; i <= n; i++){
		double a, b;  cin>>a>>b;
		mx = max(mx, sqrt(a*a+b*b));
	}
	printf("%.2lf",mx);
	return 0;
}



1064
#include<iostream>
#include<set>
using namespace std;
int main(){
	int n; cin>>n;
	set<int>ans;
	for(int i = 1; i <= n; i++){
		int x;  cin>>x;
		int t = 0;
		while(x>0){
			t += x%10;
			x /= 10;
		}
		ans.insert(t);
	}
	cout<<ans.size()<<'\n';
	set<int>::iterator it = ans.begin(), it2 = ans.begin();
	advance(it2,ans.size()-1);
	for(; it != it2; it++){
		cout<<*it<<" ";
	}
	cout<<*it;
	return 0;
}

1065
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
using namespace std;
int main(){
	int n;  cin>>n;
	map<int,int>cp;
	for(int i = 1; i <= n; i++){
		int x, y;  cin>>x>>y; 
		cp[x] = y, cp[y] = x;
	}
	int m;  cin>>m;
	vector<int>ans;
	set<int>t;
	for(int i = 1; i <= m; i++){
		int x;  cin>>x;  t.insert(x);
	}
	for(set<int>::iterator it = t.begin(); it != t.end(); it++){
		if(!cp.count(*it)){ans.push_back(*it);continue;}
		if(!t.count(cp[*it]))ans.push_back(*it);
	}
	if(ans.size()==0){cout<<0;return 0;} //mmp
	cout<<ans.size()<<"\n";
	sort(ans.begin(),ans.end());
	for(int i = 0; i < ans.size()-1; i++)
		printf("%05d ",ans[i]);//mmp
	printf("%05d",ans[ans.size()-1]);//mmp
	return 0;
}

1066
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int gcd(int a, int b){return !b?a:gcd(b,a%b);}
int main(){
	ios::sync_with_stdio(false);
	int m, n, a, b, hui;
	cin>>m>>n>>a>>b>>hui;
	for(int i = 1; i <= m; i++){
		for(int j = 1; j <= n; j++){
			int x;  cin>>x;
			if(x>=a && x<=b)x = hui;
			if(j!=1)putchar(' ');
			printf("%03d",x);
		}
		putchar('\n');
	}
	return 0;
}



1067
//测试点2:在输入#退出时候,不能输出被锁定;
//测试点5:密码中可能会包括空格,需要用getline。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
	string pwd; int k;
	cin>>pwd>>k; cin.get();
	string t;
	while(getline(cin,t) && t!="#"){
		if(t==pwd){
			cout<<"Welcome in\n";
			return 0;
		}else{
			cout<<"Wrong password: "<<t<<"\n";
			k--;
			if(k==0){
				cout<<"Account locked\n";
				return 0;
			}
		}
	}
	return 0;
}


1068
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1010;
int m, n, tol, a[maxn][maxn];
int check(int x, int y){
	for(int dx=-1; dx <= 1; dx++){
		for(int dy=-1; dy<=1; dy++){
			if(dx==dy&&dx==0)continue;
			int nx = x+dx, ny = y+dy;
			if(nx>=1&&nx<=n&&ny>=1&&ny<=m && abs(a[nx][ny]-a[x][y])<=tol)return 0;
		}
	}
	return 1;
}
int main(){
	cin>>m>>n>>tol;
	map<int,int>ma;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			{ cin>>a[i][j]; ma[a[i][j]]++;}
	int cnt = 0, x, y;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			if(ma[a[i][j]]==1 && check(i,j)){
				cnt++; x = i; y = j;
			}
		}
	}
	if(cnt==1)printf("(%d, %d): %d",y,x,a[x][y]);
	else if(cnt==0)printf("Not Exist");
	else printf("Not Unique");
	return 0;
}


1069
#include<iostream>
#include<set>
#include<string>
#include<vector>
using namespace std;
string name[1010];
int main(){
	int m, n, s;
	cin>>m>>n>>s;
	for(int i = 1; i <= m; i++)cin>>name[i];
	set<string>se; vector<string>ans;
	for(int i = s; i <= m; i+=n){
		while(se.count(name[i]))i++;
		se.insert(name[i]);
		ans.push_back(name[i]);
	}
	if(se.size()!=0){
		for(int i = 0; i < ans.size(); i++)
			cout<<ans[i]<<"\n";
	}else cout<<"Keep going...";
	return 0;
}

1070
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[10010];
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++)cin>>a[i];
	sort(a+1,a+n+1);
	int ans = a[1];
	for(int i = 2; i <= n; i++)
		ans = (ans+a[i])/2;
	cout<<ans<<"\n";
	return 0;
}


1071
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[10010];
int main(){
	int T, K;  cin>>T>>K;
	for(int i = 1; i <= K; i++){
		int n1, b, t, n2;
		cin>>n1>>b>>t>>n2;
		int flag;
		if(n1>n2)flag = 0; 
		else flag = 1;
		if(T==0){
			printf("Game Over.\n");
			return 0;
		}else if(t>T){
			printf("Not enough tokens.  Total = %d.\n",T);
		}else if(flag == b){
			T += t;
            printf("Win %d!  Total = %d.\n",t,T);
		}else{
			T -= t;
            printf("Lose %d.  Total = %d.\n", t, T);
		}
	}
	return 0;
}


1072
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int vis[10010];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= m; i++){
		int x;  cin>>x;  vis[x]++;
	}
	int c1 = 0, c2 = 0;
	for(int i = 1; i <= n; i++){
		string name; int k;  
		cin>>name>>k;
		vector<int>vc;
		for(int j = 1; j <= k; j++){
			int x;  cin>>x;
			if(vis[x])vc.push_back(x);
		}
		if((int)vc.size()!=0){
			c1++;
			cout<<name<<":";
			for(int j = 0; j < vc.size(); j++){
				printf(" %04d", vc[j]);
			}
			cout<<"\n";
		}
		c2 += vc.size();
	}
	cout<<c1<<" "<<c2<<"\n";
	return 0;
}


1073
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int sc[110]; string ans[110];
int wa[110][110];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= m; i++){
		int k1, k2;  cin>>sc[i]>>k1>>k2;
		for(int j = 1; j <= k2; j++){
			char ch;  cin>>ch;
			ans[i] += ch;
		}
	}
	for(int i = 1; i <= n; i++){
		double fen = 0;
		for(int j = 1; j <= m; j++){
			int ok = 1;
			
			getchar();
			for(int k = 0; k < ans[j].size(); k++)
				wa[j][ans[j][k]-'a']++;
			int kk;
			scanf("(%d", &kk);
			for(int k = 1; k <= kk; k++){
				char ch;  scanf(" %c)", &ch);
				if(ans[j].find(string(1,ch))!=string::npos){
					wa[j][ch-'a']--;//他没选但是答案里有也算错
					continue;
				}else{
					wa[j][ch-'a']++;//他选了个错的
					ok = 0;
				}
			}
			if(kk==(int)ans[j].size() && ok==1){
				fen += sc[j];
			}else if(ok==1&&(int)kk!=ans[j].size()){
				fen += sc[j]*1.0/2;
			}
		}
		printf("%.1lf\n",fen);
	}
	int mx = 0;
	for(int i = 1; i <= m; i++)
		for(int j = 0; j < 5; j++)
			mx = max(mx, wa[i][j]);
	if(mx == 0)printf("Too simple\n");
	else{
		for(int i = 1; i <= m; i++){
			for(int j = 0; j < 5; j++){
				if(mx==wa[i][j]){
					printf("%d %d-%c\n",mx,i,'a'+j);
				}
			}
		}
	}
		
	return 0;
}


1074
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
	string a, b, c, d;
	cin>>a>>b>>c;
	d = a;
	b = string(a.size()-b.size(),'0')+b;
	c = string(a.size()-c.size(),'0')+c;
	int t = 0;//进位
	for(int i = a.size()-1; i >= 0; i--){
		int p = a[i]-'0';
		if(p==0)p = 10;
		d[i] = (b[i]-'0'+c[i]-'0'+t)%p+'0';
		t = (b[i]-'0'+c[i]-'0'+t)/p;
	}
	if(t!=0)d='1'+d;
	int st = 0;
	while(d[st]=='0')st++;
	if(st<d.size())cout<<d.substr(st,d.size()-st+1);
	else cout<<0;
	return 0;
}


1075
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int begin, n, k;
	cin>>begin>>n>>k;
	for(int i = 1; i <= n; i++){
		int x; cin>>x; li[x].address = x;
		cin>>li[x].data>>li[x].next;
	}
	int cnt = 0;
	vector<int>v[5];
	for(int i = begin; i != -1; i=li[i].next){
		if(li[i].data<0)v[1].push_back(i);
		else if(li[i].data>=0&&li[i].data<=k)v[2].push_back(i);
		else v[3].push_back(i);
	}
	int ok = 0;
	for(int i = 1; i <= 3; i++){
		for(int j = 0; j < v[i].size(); j++){
			if(ok==0){
				printf("%05d %d ",v[i][j],li[v[i][j]].data);
                ok = 1;
			}else{
				printf("%05d\n%05d %d ",v[i][j],v[i][j],li[v[i][j]].data);
			}
			
		}
	}
	puts("-1");
	return 0;
}


1076
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= 4; j++){
			string s;  cin>>s;
			if(s[2]=='T')putchar('1'+s[0]-'A');
		}
	}
	return 0;
}


1077
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= n; i++){
		int mx=-1, mi = 1e9+10;
		int g1, g2, cnt=0; cin>>g1; g2 = 0;
		for(int j = 2; j <= n; j++){
			int x; cin>>x;
			if(x>m||x<0)continue;
			g2+=x;
			mx = max(mx, x);
			mi = min(mi,x);
			cnt++;
		}
		g2 -= mx; g2-=mi; g2= (int)((g2+0.5)/(cnt-2));
		cout<<(int)((g1+g2)/2.0+0.5)<<"\n";
	}
	return 0;
}


1078
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	char op;  cin>>op;  cin.get();
	string s;  getline(cin,s);
	if(op=='C'){
		char ch = s[0];int cnt = 1;
		for(int i = 1; i < s.size(); i++){
			if(s[i]!=ch){
				if(cnt!=1)cout<<cnt;
				cout<<ch;
				ch = s[i];
				cnt = 1;
			}else cnt++;
		}
		if(cnt!=1)cout<<cnt;
		cout<<ch;
	}else{
		char ch;  int cnt = 0;
		for(int i = 0; i < s.size(); i++){
			if(isdigit(s[i])){
				cnt = cnt*10+s[i]-'0';
			}else{
				if(cnt==0)cnt = 1;
				cout<<string(cnt,s[i]);
				cnt = 0;
			}
		}
		
	}
	return 0;
}


1079
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
string rev(string s){
	reverse(s.begin(),s.end());
	return s;
}
string add(string a, string b){
	string ans = a;
	int t = 0;//进位
	for(int i = a.size()-1; i >= 0; i--){
		ans[i] = (a[i]-'0'+b[i]-'0'+t)%10+'0';
		t = (a[i]-'0'+b[i]-'0'+t)/10;
	}
	if(t>0)ans = "1"+ans;
	return ans;
}
int main(){
	string s;  cin>>s;
	if(s==rev(s)){cout<<s<<" is a palindromic number.";return 0;}
	for(int i = 1; i <= 10; i++){
		string t = add(s,rev(s));
		cout<<s<<" + "<<rev(s)<<" = "<<t<<"\n";
		if(t==rev(t)){
			cout<<t<<" is a palindromic number.\n";
            return 0;
		}
		s = t;
	}
	cout<<"Not found in 10 iterations.\n";
	return 0;
}


1080
//W2.修改了四舍五入的方式
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
#include<cmath>
using namespace std;

struct st{
	string id;
	int gp, gm, gn, g;
	int ok;
	st(int x = -1){gp=gm=gn=ok=x;g=0;}
	bool operator < (const st& b){
		if(this->g==b.g)return this->id<b.id;
		return this->g>b.g;
	}
};
bool cmp(pair<string,st> a,pair<string,st> b){return a.second < b.second;}

int main(){
	int p, m, n;
	cin>>p>>m>>n;
	map<string,st>ans;
	for(int i = 1; i <= p; i++){
		string a; int b; cin>>a>>b;
		st c; c.id = a; c.gp=b;
		if(!ans.count(a))ans[a] = c;//ans.insert(make_pair(a,c));
	}
	for(int i = 1; i <= m; i++){
		string a; int b; cin>>a>>b;
		st c; c.id = a; c.gm=b;
		if(!ans.count(a))ans.insert(make_pair(a,c));
		else ans[a].gm = b;
	}
	for(int i = 1; i <= n; i++){
		string a; int b; cin>>a>>b;
		st c; c.id = a; c.gn=b;
		if(!ans.count(a))ans.insert(make_pair(a,c));
		else ans[a].gn = b;
	}
	for(map<string,st>::iterator it = ans.begin(); it != ans.end(); it++){
		if((*it).second.gn>(*it).second.gm)(*it).second.g = (*it).second.gn;
		else (*it).second.g = int(0.4*(*it).second.gm+0.6*(*it).second.gn+0.5);
	}
	vector<pair<string,st> >aa(ans.begin(),ans.end());
	sort(aa.begin(),aa.end(),cmp);
	for(vector<pair<string,st> >::iterator it = aa.begin(); it != aa.end(); it++){
		if((*it).second.gp>=200 && (*it).second.g>=60)
			printf("%s %d %d %d %d\n",(*it).second.id.c_str(), (*it).second.gp, (*it).second.gm, (*it).second.gn,(*it).second.g);
	}
	return 0;
}

1081
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n;  cin>>n;  cin.get();
	for(int i = 1; i <= n; i++){
		string s;  getline(cin,s);
		if(s.size()<6)cout<<"Your password is tai duan le.\n";
		else{
			int ok = 0, zimu = 0, shuzi = 0;
			for(int j = 0; j < s.size(); j++){
				if(isdigit(s[j]))shuzi++;
				else if(isalpha(s[j]))zimu++;
				else if(s[j]!='.')ok++;
			}
			if(ok)cout<<"Your password is tai luan le.\n";
			else if(!zimu)cout<<"Your password needs zi mu.\n";
			else if(!shuzi)cout<<"Your password needs shu zi.\n";
			else cout<<"Your password is wan mei.\n";
		}
	}
	return 0;
}


1082
//感觉是个贪心
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n;  cin>>n;
	int mx = -1, mi = 1e9+10, tmx, tmi;
	for(int i = 1; i <= n; i++){
		int id, x, y;  cin>>id>>x>>y;
		int dis = x*x+y*y;
		if(dis>mx){mx=dis;tmx=id;}
		if(dis<mi){mi=dis;tmi=id;}
	}
	printf("%04d %04d",tmi,tmx);
	return 0;
}


1083
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
int main(){
	int n;  cin>>n;
	map<int,int>m;
	for(int i = 1; i <= n; i++){
		int x;  cin>>x;
		int t = max(i-x,x-i); m[t]++;
	}
	//没有重复不用输出
	for(map<int,int>::reverse_iterator it = m.rbegin(); it != m.rend(); it++){
		if(((*it).second)!=1)cout<<((*it).first)<<" "<<((*it).second)<<'\n';
	}
	return 0;
}

1084
//后面那个是对前面那个数的介绍,即统计相连且相同字符出现的次数
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	string s; int n; cin>>s>>n;
	for(int i = 2; i <= n; i++){
		string t;
		for(int j = 0, k; j < s.size(); j = k){
			for(k = j; k<s.size()&&s[k]==s[j]; k++);
			t += s[j]+to_string(k-j);
		}
		s = t;
	}
	cout<<s;
	return 0;
}


1085
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#include<vector>
using namespace std;

struct school{
	string name;
	//double score;
	int s1,s2,s3,score;
	int number;
	school(){s1=s2=s3=score=0,number=0;}
};
void xiaoxie(string &x){
	for(int i = 0; i < x.size(); i++)
		x[i] = tolower(x[i]);
}
bool cmp(pair<string,school> a, pair<string,school> b){
	if(a.second.score != b.second.score)return a.second.score>b.second.score;
	if(a.second.number != b.second.number)return a.second.number<b.second.number;
	return a.second.name<b.second.name;
}

int main(){
	int n;  cin>>n;
	map<string,school>mm;
	for(int i = 1; i <= n; i++){
		string id,sch; int num;
		cin>>id>>num>>sch;
		xiaoxie(sch);
		//处理输入数据
		if(!mm.count(sch))mm[sch].name = sch;
		mm[sch].number++;
		if(id[0]=='A')mm[sch].s1 += num;
		if(id[0]=='B')mm[sch].s2 += num;
		if(id[0]=='T')mm[sch].s3 += num;
	}
	//mmp:题目说的是把总分除以1.5而不是每次除,最后一个点数据大了精度过不去
	for(map<string,school>::iterator it = mm.begin(); it != mm.end(); it++){
		it->second.score = it->second.s1+it->second.s2/1.5+it->second.s3*1.5;
	}
	//用vector排序map<key,value>中value的值,(map默认key排序
	vector<pair<string,school> >vec(mm.begin(),mm.end());
	sort(vec.begin(),vec.end(),cmp);
	int rank = 1;
	cout<<vec.size()<<'\n';
	for(int i = 0; i < vec.size(); i++){
		if(i!=0 && (int)vec[i].second.score!=(int)vec[i-1].second.score)rank=i+1;
		cout<<rank<<' '<<vec[i].second.name<<' '<<(int)vec[i].second.score<<' '<<vec[i].second.number<<'\n';
	}
	return 0;
}

1086
//后面那个是对前面那个数的介绍,即统计相连且相同字符出现的次数
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int a, b;
	cin>>a>>b;
	string s = to_string(a*b);
	reverse(s.begin(),s.end());
	cout<<stoi(s);
	return 0;
}


1087
//后面那个是对前面那个数的介绍,即统计相连且相同字符出现的次数
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int main(){
	int n;  cin>>n;
	set<int>se;
	for(int i = 1; i <= n; i++){
		se.insert(i/2+i/3+i/5);
	}
	cout<<se.size();
	return 0;
}


1088
//后面那个是对前面那个数的介绍,即统计相连且相同字符出现的次数
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
struct node{ int address, data, next;}li[maxn];
int m, x, y;
void print(double t){
	if(t==m)printf(" Ping");
	if(t>m)printf(" Cong");
	if(t<m)printf(" Gai");
}
int main(){
	cin>>m>>x>>y;
	for(int i = 99; i >= 10; i--){
		int j = i%10*10+i/10;
		double k = abs(i-j)*1.0/x;
		if(j==k*y){
			cout<<i;
			print(i);  print(j);  print(k);
			return 0;
		}
	}
	cout<<"No Solution\n";
	return 0;
}


1089
//枚举所有的情况并判断
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int v[maxn];//每个人说的话
int main(){
	int n;  cin>>n;
	for(int i = 1; i <= n; i++)cin>>v[i];
	for(int i = 1; i <= n; i++){//枚举(i,j)表示狼人
		for(int j = i+1; j <= n; j++){
			vector<int>a(n+1,1);//记录狼人
			a[i] = -1, a[j] = -1;
			vector<int>lie;//枚举冲突的就是说谎
			for(int k = 1; k <= n; k++)
				if(v[k]*a[abs(v[k])]<0)lie.push_back(k);
			//恰好有两个人说谎,一个狼人一个好人
			if(lie.size()==2 && a[lie[0]]+a[lie[1]]==0){
				cout<<i<<" "<<j;
				return 0;
			}
		}
	}
	cout<<"No Solution";
	return 0;
}


1090
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int main(){
	ios::sync_with_stdio(false);
	int n, m;  cin>>n>>m;
	map<int, vector<int> >ma;
	for(int i = 1; i <= n; i++){
		int x, y;  cin>>x>>y;
		ma[x].push_back(y);
		ma[y].push_back(x);
	}
	for(int i = 1; i <= m; i++){
		int k;  cin>>k;
		set<int>se;
		for(int j = 1; j <= k; j++){
			int x;  cin>>x;  se.insert(x);
		}
		int ok = 1;
		for(int x : se)
			for(int y : ma[x])
				if(se.count(y))ok = 0;
		if(ok)cout<<"Yes\n";
		else cout<<"No\n";
	}
	return 0;
}


1091
//关了流同步,不能cin和scanf一起,否则会WA
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int main(){
	//ios::sync_with_stdio(false);
	int T;  cin>>T;
	while(T--){
		int k;  cin>>k;
		int ok = 0;
		for(int n = 1; n < 10; n++){
			int t = k*k*n;
			string s1 = to_string(t), s2 = to_string(k);
			if(s1.substr(s1.size()-s2.size())==s2){
				cout<<n<<" "<<t<<"\n";
				ok = 1;
				break;
			}
		}
		if(ok==0)printf("No\n");
	}
	return 0;
}


1092
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int a[110][1010], sum[1010];
int main(){
	//ios::sync_with_stdio(false);
	int n, m;  cin>>n>>m; //月饼1010,城市110
	int mx = -1;
	for(int i = 1; i <= m; i++){
		for(int j = 1; j <= n; j++){
			cin>>a[i][j];
			sum[j] += a[i][j];
			mx = max(mx, sum[j]);
		}
	}
	cout<<mx<<"\n";
	int ok = 0;
	for(int i = 1; i <= n; i++){
		if(sum[i]==mx){
			if(ok)cout<<" ";
			cout<<i;
			ok = 1;
		}
	}
	return 0;
}


1093
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int a[110][1010], sum[1010];
int main(){
	//ios::sync_with_stdio(false);
	string s1, s2;
	getline(cin,s1);
	getline(cin,s2);
	set<char>se;
	for(int i = 0; i < s1.size(); i++){
		if(!se.count(s1[i]))cout<<s1[i];
		se.insert(s1[i]);
	}
	for(int i = 0; i < s2.size(); i++){
		if(!se.count(s2[i]))cout<<s2[i];
		se.insert(s2[i]);
	}
	return 0;
}


1094
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int a[110][1010], sum[1010];
bool isprime(int n){
	for(int i = 2; i*i<=n; i++)
		if(n%i==0)return 0;
	return 1;
}
int main(){
	//ios::sync_with_stdio(false);
	int l, k;  string s;
	cin>>l>>k>>s;
	for(int i = 0; i <= l-k; i++){
		int x = stoi(s.substr(i,k));
		if(isprime(x)){//WA2,前导零也要输出
			cout<<s.substr(i,k)<<"\n"; return 0;
		}
	}
	cout<<"404\n";
	return 0;
}


1095
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4+10;
struct node{string id; int sc;}a[maxn];
bool cmp(node a, node b){return a.sc!=b.sc?a.sc>b.sc:a.id<b.id;}
int main(){
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int n, m;  cin>>n>>m;
	for(int i = 1; i <= n; i++)
		cin>>a[i].id>>a[i].sc;
	for(int i = 1; i <= m; i++){
		int op; string s;  cin>>op>>s;
		cout<<"Case "<<i<<": "<<op<<" "<<s<<"\n";
		vector<node>ans;
		int cnt = 0, sum = 0;
		if(op==1){
			for(int j = 1; j <= n; j++){
				if(a[j].id[0]==s[0]){
					ans.push_back(a[j]);//准考证,成绩
				}
			}
		}else if(op==2){
			for(int j = 1; j <= n; j++){
				if(a[j].id.substr(1,3)==s){
					cnt++;
					sum += a[j].sc;
				}
			}
			if(cnt!=0)cout<<cnt<<" "<<sum<<"\n";
			else cout<<"NA\n";
			continue;
		}else{
			map<string,int>ma;//考场编号,总人数
			for(int j = 1; j <= n; j++){
				if(a[j].id.substr(4,6)==s){
					ma[a[j].id.substr(1,3)]++;
				}
			}
			for(auto x:ma){
				ans.push_back(node{x.first,x.second});
			}
		}
		if(ans.size()==0){cout<<"NA\n"; continue;}
		sort(ans.begin(),ans.end(),cmp);
		int len = ans.size();
		for(int j = 0; j < len; j++){
			cout<<ans[j].id<<" "<<ans[j].sc<<"\n";
		}
	}
	return 0;
}


引用提供了关于PTA乙级库中C语言1012AC代码。这段代码是一个自定义判程序,主要用于判断给定的整数是否满足特定条件并输出相应结果。从代码中可以看出,程序首先生成了一个数组`hs`,用于记录满足条件的整数。然后,程序通过输入一个整数`t`,判断`t`是否在数组`hs`中。如果在,则输出"Yes",并调用`source`函数输出符合条件的两个整数。如果不在,则输出"No"和`t`的值,并同样调用`source`函数输出符合条件的两个整数。这段代码通过循环和条件判断实现了对整数的判断和输出。因此,这段代码可以作为解决PTA乙级库中C语言1012的参考答案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2021年秋季PAT乙级解(C语言)](https://blog.csdn.net/qq_52491362/article/details/122885578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [PTA乙级解(112)](https://blog.csdn.net/qq_51774501/article/details/127828525)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哈里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值