博客
关于我
PAT (Basic Level) Practice 乙级1031-1040
阅读量:795 次
发布时间:2023-02-26

本文共 3798 字,大约阅读时间需要 12 分钟。

1031 查验身份证

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10

M:1 0 X 9 8 7 6 5 4 3 2

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。

代码:#include

#include
#include
using namespace std;int main() {int n;char a[20];int i, j, sum = 0, z = 0, fl = 1;cin >> n;int aa[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};for (j = 0; j < n; j++) {cin >> a;sum = 0;for (i = 0; i < 17; i++) {if (a[i] >= '0' && a[i] <= '9') {sum += (a[i] - '0') * aa[i];} else {cout << a;}}z = sum % 11;if (z < 0) z += 11;if (z == 0) {cout << "1";} else {cout << z;}}return 0;}

1032 挖掘机技术哪家强

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

代码:#include

#include
#include
#include
#include
using namespace std;int main() {int n, i, j, max = 1;cin >> n;int id, sc, a[n + 1] = {0};for (i = 0; i < n; i++) {cin >> id >> sc;a[id] += sc;if (id >= max) {max = id;}}int s = 0, p;for (i = 0; i < max + 1; i++) {if (a[i] > s) {s = a[i];p = i;}}cout << p << ' ' << s;return 0;}

1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母a-z,A-Z,数字0-9,以及下划线,逗号,句点,减号,和键(代表上档键)。题目保证第2行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

代码:#include

#include
using namespace std;int main() {string a, b;getline(cin, a);getline(cin, b);string c = "";for (int i = 0; i < b.length(); i++) {if (b[i] >= 'a' && b[i] <= 'z') {if (a.find(b[i] - 32) == -1) {c += b[i];}} else {if (a.find(b[i]) == -1) {c += b[i];}}}if (a.find("+") != -1) {for (int i = 0; i < c.size(); i++) {if (c[i] >= 'A' && c[i] <= 'Z') {// 大写字符无法输出} else {cout << c[i];}}} else {cout << c;}return 0;}

1034 有理数四则运算

本题要求编写程序,计算2个有理数的和、差、积、商。

输入格式:输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。

输出格式:分别在4行中按照有理数1 运算符 有理数2 = 结果的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式ka/b,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出Inf。题目保证正确的输出中没有超过整型范围的整数。

代码:#include

#include
#include
#include
#include
#include
using namespace std;

ll gcd(ll x, ll y) {if (y == 0) return x;return gcd(y, x % y);}

void fun(ll m, ll n) {if (m == 0 || n == 0) {if (m == 0) cout << 0;else cout << "Inf";return;}int flag = 0;if ((m < 0 && n > 0) || (m > 0 && n < 0)) flag = 1;m = abs(m);n = abs(n);ll x = m / n;if (flag == 1) cout << "(-";if (x != 0) cout << x;cout << " ";ll remainder = m % n;if (remainder != 0) {remainder = remainder / n;if (flag == 1) {if (remainder < 0) {remainder = -remainder;flag = 1;}} else {if (remainder > 0) {flag = 1;}}cout << remainder << "/" << n;}if (flag == 1) cout << ")";}

1035 插入与归并

根据维基百科的定义:

插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

归并排序进行如下迭代操作:首先将原始序列看成N个只包含1个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下1个有序的序列。

现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?

输入格式:输入在第一行给出正整数N(≤100);随后一行给出原始序列的N个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。

输出格式:首先在第1行中输出Insertion Sort表示插入排序、或Merge Sort表示归并排序;然后在第2行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行首尾不得有多余空格。

代码:#include

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

int main() {int n, i, j;cin >> n;int a[n + 2], b[n + 2];for (i = 0; i < n; i++) {cin >> a[i];}for (i = 0; i < n; i++) {cin >> b[i];}j = 1;for (i = 0; i < n; i++) {if (b[i + 1] == b[i]) {continue;} else break;}i++;j = i;while (i < n) {if (b[i] <= b[i - 1]) {swap(b[i], b[i - 1]);}i++;}if (j == 1) {for (int k = 0; k < n; k++) {if (b[k] < b[k - 1]) {swap(b[k], b[k - 1]);}}j++;}...

转载地址:http://dxvfk.baihongyu.com/

你可能感兴趣的文章
PageHelper分页查询遇到的小问题
查看>>
PageHelper实现分页详细版、整合SSM应用
查看>>
PageHelper常见问题
查看>>
SpringBoot中配置为开发模式,代码修改后不用重新运行
查看>>
springboot中pom.xml、application.yml、application.properties
查看>>
PageHelper:上手教程(最详细)
查看>>
PageOffice如何实现从零开始动态生成图文并茂的Word文档
查看>>
PageRank算法
查看>>
Paint类(画笔)
查看>>
paip. 调试技术打印堆栈 uapi print stack java php python 总结.
查看>>
paip.android 手机输入法制造大法
查看>>
paip.spring3 mvc servlet的配置以及使用最佳实践
查看>>
Palindrome Number leetcode java
查看>>
Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
查看>>
Palo Alto Networks Expedition 远程命令执行漏洞(CVE-2024-9463)
查看>>
Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
查看>>
Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现
查看>>
Springboot中@SuppressWarnings注解详细解析
查看>>
Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现
查看>>
Panalog 日志审计系统 sprog_upstatus.php SQL 注入漏洞复现(XVE-2024-5232)
查看>>