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

2023-11-20 13:38

本文主要是介绍春节刷题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 secondusing 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 secondusing 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)。

这篇关于春节刷题day2:[PAT乙级:1011 ~ 1020 ]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394989

相关文章

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(LeetCode) 3. 63. 不同路径 II - 力扣(LeetCode) 1. 91. 解码方法 - 力扣(LeetCode) //思路:动态规划。 cl

hot100刷题第1-9题,三个专题哈希,双指针,滑动窗口

求满足条件的子数组,一般是前缀和、滑动窗口,经常结合哈希表; 区间操作元素,一般是前缀和、差分数组 数组有序,更大概率会用到二分搜索 目前已经掌握一些基本套路,重零刷起leetcode hot 100, 套路题按套路来,非套路题适当参考gpt解法。 一、梦开始的地方, 两数之和 class Solution:#注意要返回的是数组下标def twoSum(self, nums: Lis

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II

代码随想录刷题day25丨491.递增子序列 ,46.全排列 ,47.全排列 II 1.题目 1.1递增子序列 题目链接:491. 非递减子序列 - 力扣(LeetCode) 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序列_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0491.%E9%80%92%E

Java预备知识 - day2

1.IDEA的简单使用与介绍 1.1 IDEA的项目工程介绍 Day2_0904:项目名称 E:\0_code\Day2_0904:表示当前项目所在路径 .idea:idea软件自动生成的文件夹,最好不要动 src:src==sourse→源,我们的源代码就放在这个文件夹之内 Day2_0904.iml:也是自动生成的文件,不要动 External Libraries:外部库 我这

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II

代码随想录刷题day24丨93.复原IP地址 ,78.子集 , 90.子集II 1.题目 1.1复原IP地址 题目链接:93. 复原 IP 地址 - 力扣(LeetCode) 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔哩_bilibili 文档讲解:https://programmercarl.com/0093.%E5%A4%8

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution {public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k)

C语言:刷题日志(1)

一.阶乘计算升级版 本题要求实现一个打印非负整数阶乘的函数。 其中n是用户传入的参数,其值不超过1000。如果n是非负整数,则该函数必须在一行中打印出n!的值,否则打印“Invalid input”。 首先,知道阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。那么我们先来个简单的阶乘计算吧。 #include<stdio.h>int Fact(int n){if (n <=

【每日刷题】Day112

【每日刷题】Day112 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 2. 面试题 08.01. 三步问题 - 力扣(LeetCode) 3. LCR 088. 使用最小花费爬楼梯 - 力扣(LeetCode) 1. 1137. 第 N 个泰波那契数 - 力扣(LeetCo

【数据结构】【java】leetcode刷题记录--链表

简介 链表是一种常见的基础数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。在Java中,链表通常用于实现动态数据结构,因为它可以根据需要动态地增加或减少节点。 链表简介: 节点结构:链表中的每个元素称为节点(Node),每个节点包含两部分:数据域(存储数据)和指针域(存储下一个节点的地址)动态性:链表的长度不是固定的,可以根据需要动态地增减节点。内存分配:链表中的节点

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边