春节刷题day8:[PAT乙级:1041 ~ 1050]

春节刷题day8:PAT

1041 考试座位号

1042 字符统计

1043 输出PATest

1044 火星数字

1045 快速排序

1046 划拳

1047 编程团体赛

1048 数字加密

1049 数列的片段和

1050 螺旋矩阵


1、1041 考试座位号

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 2e7 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T, tot;
int l, r, ans;
map<int, pair<string, int> > p;
string s;

int main(){
	int i, j, k;
	while( scanf("%d", &n) == 1){
		while(n--){
			cin >> s >> l >> r;
			p[l] = mp(s, r);
		}
		scanf("%d", &m);
		while(m--){
			scanf("%d", &k);
			pair<string, int> e = p[k];
			cout << e.fi << " " << e.se << endl;
		}
	}
	return 0;
}

2、1042 字符统计

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 2e7 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T, tot;
int l, r, ans;
map<char, int> p;
string s;

int main(){
	int i, j, k;
	while( getline(cin, s)){
		int len = s.size();
		int Max = -1;
		for(i = 0; i < len; i++){
			if(s[i] >= 'A' && s[i] <= 'Z') s[i] += 'a' - 'A';
			if(s[i] >= 'a' && s[i] <= 'z'){
				p[s[i]]++;
				Max = max(p[s[i]], Max);
			}
		}
		for(map<char, int>::iterator it = p.begin(); it != p.end(); it++)
			if(it -> se == Max){ printf("%c %d\n", it -> fi, it ->se); break; }
	}
	return 0;
}

3、1043 输出PATest

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 2e7 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T, tot;
int l, r, ans;
map<char, int> p;
string s;

int main(){
	int i, j, k;
	while( cin >> s){
		int len = s.size();
		for(i = 0; i < len; i++) p[s[i]]++;
		bool ok = true;
		while(ok){
			ok = false;
			if(p['P'] > 0){ printf("P"); p['P']--; ok = true; }
			if(p['A'] > 0){ printf("A"); p['A']--; ok = true; }
			if(p['T'] > 0){ printf("T"); p['T']--; ok = true; }
			if(p['e'] > 0){ printf("e"); p['e']--; ok = true; }
			if(p['s'] > 0){ printf("s"); p['s']--; ok = true; }
			if(p['t'] > 0){ printf("t"); p['t']--; ok = true; }
		}
		puts("");
	}
	return 0;
}

4、1044 火星数字

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<bitset>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T;
int l, r, ans;
string s;
string p[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string q[13] = {"---", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};

int main(){
	int i, j, k;
	scanf("%d", &T); getchar();
	while( T-- ){
		ans = 0;
		getline(cin, s);
		int len = s.size();
		if(s[0] >= '0' && s[0] <= '9'){
			reverse(s.begin(), s.end()); k = 1;
			for(i = 0; i < len; i++){ ans += (s[i] - '0') * k; k *= 10; }
			l = ans / 13; r = ans % 13;
			if(l && r) cout << q[l] << " " << p[r] << endl;
			else if(l) cout << q[l] << endl;
			else cout << p[r] << endl;
		}else{
			for(i = 0; i < len; i++) if(s[i] == ' ') break;
			if(i != len){
				string t = s.substr(0, i), tt = s.substr(i + 1);
				for(i = 0; i < 13; i++) if(q[i] == t) break;
				ans += i * 13;
				for(i = 0; i < 13; i++) if(p[i] == tt) break;
				ans += i;
			}else{
				for(i = 0; i < 13; i++) if(q[i] == s){ ans = i * 13; break; }
				for(i = 0; i < 13; i++) if(p[i] == s){ ans = i; break; }
			}
			cout << ans << endl;
		}
		s = "";
	}
	return 0;
}

5、1045 快速排序

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 2e7 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T, tot;
int l, r, ans[maxx + 5];
int a[maxx + 5], b[maxx + 5];

int main(){
	int i, j, k;
	while( scanf("%d", &n) == 1){
		for(i = 1; i <= n; i++){
			scanf("%d", &a[i]);
			b[i] = a[i];
		}
		int Max = -1;
		for(i = 1; i <= n; i++){
			if(a[i] < Max) b[i] = 0;
			Max = max(a[i], Max);
		}
		int Min = inf;
		for(i = n; i >= 1; i--){
			if(a[i] > Min) b[i] = 0;
			Min = min(a[i], Min);
		}
		for(i = 1; i <= n; i++) if(b[i]) ans[tot++] = b[i];
		cout << tot << endl;
		sort(ans, ans + tot);
		if(tot > 0) cout << ans[0];
		for(i = 1; i < tot; i++)
			printf(" %d", ans[i]);
		puts("");
	}
	return 0;
}

6、1046 划拳

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const double eps = 1e-5;
const ll mod = 1e9 + 7;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int  n, m, T;
int a, b, c;
int l1, l2, r1, r2;

int main(){
	int i, j, k;
	while( scanf("%d", &n) == 1){
		a = b = 0;
		while(n--){
			scanf("%d %d %d %d", &l1, &l2, &r1, &r2);
			k = l1 + r1;
			if(l2 == k && r2 != k) b++;
			else if(l2 != k && r2 == k) a++;
		}
		printf("%d %d\n", a, b);
	}
	return 0;
}

7、1047 编程团体赛

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const double eps = 1e-5;
const ll mod = 1e9 + 7;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int  n, m, T;
map<int, int> p;

int main(){
	int i, j, k;
	while( scanf("%d", &T) == 1){
		int idx, Max = -1;
		while( T-- ){
			scanf("%d-%d %d", &idx, &k, &m);
			p[idx] += m; Max = max(Max, p[idx]);
		}
		for(map<int, int>::reverse_iterator it = p.rbegin(); it != p.rend(); it++){
			if(Max == it -> se){ printf("%d %d\n", it -> fi, it -> se); break; }
		}
	}
	return 0;
}

8、1048 数字加密

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int MaxN = 1e6;
const int inf = 0x3f3f3f3f;
const double eps = 1e-5;
const ll mod = 1e9 + 7;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int  n, m, T;
string s, t, p;
int l, r, ans;

int main(){
	int i, j, k;
	while( cin >> s >> t){
		int lens = s.size(), lent = t.size();
		reverse(s.begin(), s.end());
		reverse(t.begin(), t.end());
		for(i = 0; i < max(lens, lent); i++){
			if(i < lens){
				l = s[i] - '0';
			}else l = 0;

			if(i < lent){
				r = t[i] - '0';
			}else r = 0;

			if(i & 1) p += (r - l + 10) % 10 + '0';
			else{
				k = (l + r) % 13;
				if(k == 10) p += "J";
				else if(k == 11) p += "Q";
				else if(k == 12) p += "K";
				else p += '0' + k;
			}
		}
		reverse(p.begin(), p.end());
		cout << p << endl;
	}
	return 0;
}

9、1049 数列的片段和

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<bitset>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T;
long double ans, k;

int main(){
	while(cin >> n){
		for(ll i = 1; i <= n; i++){
			cin >> k;
			ans += (i - 1) * (n - i + 1) * k + (n - i + 1) * k;
		}
		printf("%.2llf\n", ans);
	}
	return 0;
}

10、1050 螺旋矩阵

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<bitset>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<algorithm>
#include<vector>
#define ll long long
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define esp 1e-5
#define lowbit(x) x & (-x)

using namespace std;

const int maxx = 1e6 + 5;
const int inf = 0x3f3f3f3f;
const ll mod = 998244353;
const ll INF = 0x3f3f3f3f3f3f3f3f;

int n, m, T, N;
int a[10005], ans[5005][5005];
bool vis[5005][5005];
int x, y, cnt, tot;

bool Is_prime(int x){
	if(x == 1) return false;
	for(int i = 2; i <= sqrt(x); i++)
		if(x % i == 0) return false;
	return true;
}

int main(){
	int i, j, k;
	while(cin >> N){
		for(i = 0; i < N; i++) cin >> a[i];
		sort(a, a + N, greater<int>());
		if(Is_prime(N)){
			for(i = 0; i < N; i++) printf("%d\n", a[i]);
			continue;
		}
		for(i = 1; i <= N; i++){
			if(N % i == 0 && i >= N / i){
				n = i; m = N / i; break;
			}
		}
		x = 0; y = -1;
		while(tot < N){
			while(y + 1 < m && !vis[x][y + 1]){ ans[x][y + 1] = a[tot++]; vis[x][y + 1] = true; y++; }
			while(x + 1 < n && !vis[x + 1][y]){ ans[x + 1][y] = a[tot++]; vis[x + 1][y] = true; x++; }
			while(y - 1 >= 0 && !vis[x][y - 1]){ ans[x][y - 1] = a[tot++]; vis[x][y - 1] = true; y--; }
			while(x - 1 >= 0 && !vis[x - 1][y]){ ans[x - 1][y] = a[tot++]; vis[x - 1][y] = true; x--; }
		}
		for(i = 0; i < n; i++){
			for(j = 0; j < m; j++) printf("%d%c", ans[i][j], j == m - 1 ? '\n' : ' ');
		}
	}
	return 0;
}

2021/2/13完结(春节和同学一起出去耍了,计划就搁置了,回来慢慢补吧!争取上班之前把这套题刷完!LeetCode还得接着刷)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值