本文共 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
1032 挖掘机技术哪家强
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
代码:#include
1033 旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?
输入格式:输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母a-z,A-Z,数字0-9,以及下划线,逗号,句点,减号,和键(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。
输出格式:在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
代码:#include
1034 有理数四则运算
本题要求编写程序,计算2个有理数的和、差、积、商。
输入格式:输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。
输出格式:分别在4行中按照有理数1 运算符 有理数2 = 结果的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式ka/b,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出Inf。题目保证正确的输出中没有超过整型范围的整数。
代码:#include
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
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/