春节刷题day2:[PAT乙级:1011 ~ 1020 ]

春节刷题day2:PAT

1011 A+B 和 C

1012 数字分类

1013 数素数

1014 福尔摩斯的约会

1015 德才论

1016 部分A+B

1017 A除以B

1018 锤子剪刀布

1019 数字黑洞

1020 月饼


1、1011 A+B 和 C

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second

using namespace std;

int n, m, T, tot;
long long a, b, c;

int main(){
    
    
	int i, j, k;
	cin >> T;
	for(i = 1; i <= T; i++){
    
    
		cin >> a >> b >> c;
		if(a + b > c) printf("Case #%d: true\n", i);
		else printf("Case #%d: false\n", i);
	}
	return 0;
}

2、1012 数字分类

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second

using namespace std;

int n, m, T, tot;
int ans[10];
bool f;

int main(){
    
    
	int i, j, k;
	while( cin >> n){
    
    
		f = true;
		for(i = 0; i < n; i++){
    
    
			cin >> k;
			if(k % 5 == 0 && (k & 1) == 0) ans[0] += k;
			if(k % 5 == 1){
    
    
				tot++;
				if(f) ans[1] += k;
				else ans[1] -= k;
				f = !f;
			}
			if(k % 5 == 2) ans[2]++;
			if(k % 5 == 3){
    
     ans[3] += k; m++; }
			if(k % 5 == 4) ans[4] = max(ans[4], k);
		}
		if(ans[0]) printf("%d", ans[0]);
		else printf("N");
		if(tot) printf(" %d", ans[1]);
		else printf(" N");
		if(ans[2]) printf(" %d", ans[2]);
		else printf(" N");
		if(ans[3]) printf(" %.1f", ans[3] * 1.0 / m);
		else printf(" N");
		if(ans[4]) printf(" %d\n", ans[4]);
		else printf(" N\n");
	}
	return 0;
}

3、1013 数素数

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 1000005
using namespace std;

int n, m, T, tot;
int ans[maxx + 5], prime[maxx + 5];
bool Is_prime[maxx + 5];

void init(){
    
    
	memset(Is_prime, 1, sizeof Is_prime);
	for(int i = 2; i <= maxx; i++){
    
    
		if(Is_prime[i]) prime[tot++] = i;
		for(int j = 0; j < tot; j++){
    
    
			if(i * prime[j] >= maxx) break;
			Is_prime[i * prime[j]] = 0;
			if(i % prime[j] == 0) break;
		}
	}
}

int main(){
    
    
	int i, j, k;
	init();
	while(cin >> n >> m){
    
    
		for(i = n - 1, k = 0; i < m; i++){
    
    
			printf("%d", prime[i]);
			k++;
			if(k == 10){
    
     puts(""); k = 0; }
			else{
    
    
				if(i != m - 1) printf(" ");
				else printf("\n");
			}
		}
	}
	return 0;
}

4、1014 福尔摩斯的约会

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 1000005
using namespace std;

int n, m, T, tot;
map<char, string> day;
map<char, int> hh;
string s1, s2, s3, s4;

void init(){
    
    
	day['A'] = "MON"; day['B'] = "TUE"; day['C'] = "WED";
	day['D'] = "THU"; day['E'] = "FRI"; day['F'] = "SAT";
	day['G'] = "SUN";
	for(int i = 0; i < 10; i++) hh['0' + i] = i;
	for(int i = 0; i < 14; i++) hh['A' + i] = 10 + i;
}

int main(){
    
    
	int i, j, k;
	init();
	while(cin >> s1 >> s2 >> s3 >> s4){
    
    
		int f = 1;
		int len1 = min(s1.size(), s2.size());
		int len2 = min(s3.size(), s4.size());
		for(i = 0; i < len1; i++){
    
    
			if(s1[i] == s2[i]){
    
    
				if(f == 1 && s1[i] >= 'A' && s1[i] <= 'G'){
    
    
					cout << day[s1[i]] << " "; f++; 
				}
				else if(f == 2 && ( (s1[i] >= '0' && s1[i] <= '9') || (s1[i] >= 'A' && s1[i] <= 'N'))){
    
    
					printf("%02d:", hh[s1[i]]); f++; 
				}
			}
		}
		for(i = 0; i < len2; i++){
    
    
			if(s3[i] == s4[i] && ( (s3[i] >= 'A' && s3[i] <= 'Z') || (s3[i] >= 'a' && s3[i] <= 'z'))){
    
     
				printf("%02d\n", i); break; 
			}
		}
	}
	return 0;
}

5、1015 德才论

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 100005
using namespace std;

int N, L, H;
int tota, totb, totc, totd;
struct node{
    
    
	string num;
	int x, y, all;
	bool operator < (const node &A)const{
    
    
		if(all == A.all){
    
    
			if(x == A.x){
    
    
				return num < A.num;
			}else return x > A.x;
		}else return all > A.all;
	}
}a[maxx + 5], b[maxx + 5], c[maxx + 5], d[maxx + 5];

int main(){
    
    
	int i, j, k;
	while(cin >> N >> L >> H){
    
    
		node now;
		for(i = 0; i < N; i++){
    
    
			cin >> now.num >> now.x >> now.y;
			now.all = now.x + now.y;
			if(now.x >= L && now.y >= L){
    
    
				if(now.x >= H && now.y >= H) a[tota++] = now;
				else if(now.x >= H && now.y < H) b[totb++] = now;
				else if(now.x >= now.y) c[totc++] = now;
				else d[totd++] = now;
			}
		}
		sort(a, a + tota);
		sort(b, b + totb);
		sort(c, c + totc);
		sort(d, d + totd);
		cout << tota + totb + totc + totd << endl;
		for(i = 0; i < tota; i++) cout << a[i].num << " " << a[i].x << " " << a[i].y << endl;
		for(i = 0; i < totb; i++) cout << b[i].num << " " << b[i].x << " " << b[i].y << endl;
		for(i = 0; i < totc; i++) cout << c[i].num << " " << c[i].x << " " << c[i].y << endl;
		for(i = 0; i < totd; i++) cout << d[i].num << " " << d[i].x << " " << d[i].y << endl;
	}
	return 0;
}

6、1016 部分A+B

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 1000005
using namespace std;

long long n, m, ans;

long long slove(){
    
    
	long long res = 0;
	while(n){
    
    
		if(n % 10 == m){
    
     res = res * 10 + m; }
		n /= 10;
	}
	return res;
}

int main(){
    
    
	int i, j, k;
	while( cin >> n >> m){
    
    
		ans += slove();
		cin >> n >> m;
		ans += slove();
		cout << ans << endl;
	}
	return 0;
}

7、1017 A除以B

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 1000005
using namespace std;

int n, m, T;
string s, ans;

void slove(){
    
    
	bool f = true;
	int a = 0;
	int len = s.size();
	for(int i = 0; i < len; i++){
    
    
		a = a * 10 + (s[i] - '0');
		if(f){
    
    
			if(a >= n){
    
     ans += (a / n + '0'); a %= n; }
			f = false;
		}else{
    
    
			ans += (a / n + '0'); a %= n;
		}
	}
	if(ans == "") cout << "0 " << a << endl;
	else cout << ans << " " << a << endl;
}

int main(){
    
    
	int i, j, k;
	while(cin >> s >> n){
    
    
		slove();
	}
	return 0;
}

8、1018 锤子剪刀布

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 100005
using namespace std;

int n, m, T;
int ans1, ans2, ans3;
char a[maxx + 5], b[maxx + 5];
struct node{
    
    
	char ch;
	int num;
	bool operator < (const node &A)const{
    
    
		if(num == A.num) return ch < A.ch;
		return num > A.num;
	}
}A[3], B[3];

void slove(char x, char y){
    
    
	if(x == 'C'){
    
    
		if(y == 'J'){
    
     A[1].num++; ans1++; }
		else if(y == 'C') ans2++;
		else{
    
     B[0].num++; ans3++; }
	}else if(x == 'J'){
    
    
		if(y == 'B'){
    
     A[2].num++; ans1++; }
		else if(y == 'J') ans2++;
		else{
    
     B[1].num++; ans3++; }
	}else{
    
    
		if(y == 'C'){
    
     A[0].num++; ans1++; }
		else if(y == 'B') ans2++;
		else{
    
     B[2].num++; ans3++; }
	}
}

int main(){
    
    
	int i, j, k;
	while(cin >> n){
    
    
		for(i = 0; i < n; i++){
    
    
			cin >> a[i] >> b[i];
			slove(a[i], b[i]);
		}
		cout << ans1 << " " << ans2 << " " << ans3 << endl;
		cout << ans3 << " " << ans2 << " " << ans1 << endl;
		A[0].ch = B[0].ch = 'B';
		A[1].ch = B[1].ch = 'C';
		A[2].ch = B[2].ch = 'J';
		sort(A, A + 3); sort(B, B + 3);
		cout << A[0].ch << " " << B[0].ch << endl;
	}
	return 0;
}

9、1019 数字黑洞

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 100005
using namespace std;

int n, m, T;
string a, b, c, s;
bool cmp(char a, char b){
    
    
	return a > b;
}

int main(){
    
    
	int i, j, k;
	while(cin >> n){
    
    
		while(1){
    
    
			a = to_string(n);
			k = log10(n) + 1;
			a.insert(a.size(), 4 - k, '0'); b = a;
			sort(a.begin(), a.end(), cmp);
			sort(b.begin(), b.end());
			c = to_string(stoi(a) - stoi(b));
			printf("%04d - %04d = %04d\n", stoi(a), stoi(b), stoi(c));
			if(stoi(a) == stoi(b) || stoi(c) == 6174) break;
			n = stoi(c);
		}
	}
	return 0;
}

10、1020 月饼

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<stack>
#include<queue>
#include<vector>
#include<sstream>
#include<string>
#include<cstring>
#define fi first
#define se second
#define maxx 100005
using namespace std;

int n, m, T;
struct node{
    
    
	double x, y;
	double val;
	bool operator < (const node &A)const{
    
    
		return val > A.val;
	}
}a[1005];
double ans;

int main(){
    
    
	int i, j, k;
	while(cin >> n >> m){
    
    
		for(i = 0; i < n; i++) cin >> a[i].x;
		for(i = 0; i < n; i++) cin >> a[i].y;
		for(i = 0; i < n; i++) a[i].val = a[i].y * 1.0 / a[i].x;
		sort(a, a + n);
		for(i = 0; i < n; i++){
    
    
			if(a[i].x <= m){
    
    
				ans += a[i].y; m -= a[i].x;
			}else{
    
    
				ans += a[i].val * m; m = 0; break;
			}
		}
		printf("%.2f\n", ans);
	}
	return 0;
}

2021/2/7完结(今天PAT提前完成,有空刷刷LeetCode)。

猜你喜欢

转载自blog.csdn.net/shangzhengyu/article/details/113738814