[湖南大学程序设计实训训练作业一]21.计算效验码

el/2023/9/24 21:05:43

21.计算效验码

  • 【问题描述】
  • 【输入形式】
  • 【输出形式】
  • 【样例输入】
  • 【样例输出】
  • 【样例说明】
  • 【Tips】
  • 题解
    • 思路
    • 代码

【问题描述】

传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的数7816,其校验码为0,因为16进制的78016是15的倍数。超过十进制后,用字母a表示10,字母b表示11,字母c表示12,字母d表示13,字母e表示14,字母f表示15。

告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。

【输入形式】

输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。

后面有t行,每行两个正整数B,N(2≤ B≤16),中间用一个空格隔开,B是10进制整数,N用B进制形式表示。测试数据保证没有非法的B进制数N(也即N中每一位都是在0到B-1之间,没有前导0)。

40%的测试数据N的位数L 1 ≤ L≤ 10;

30%的测试数据N的位数L 1 ≤ L≤ 102;

20%的测试数据N的位数L 1 ≤ L≤ 103;

10%的测试数据N的位数L 1 ≤ L≤ 104;

【输出形式】

对于每组测试数据,输出一位占一行:正整数N在B进制下的校验码。(如果校验码可以为B-1,也可以为0,输出0)。

【样例输入】

4
10 123
16 78
16 1234321
12 ab

【样例输出】

3
0
e
1

【样例说明】

第一行的4表示有4组测试数据,下面四行,每行一组测试数据。

第一组测试数据 10进制数123 最后添加检验码3,10进制数1233是9(=10-1)的倍数

第二组测试数据 16进制数78 最后添加检验码0,16进制数780是15(=16-1)的倍数

第三组测试数据 16进制数1234321 最后添加检验码e(=14),16进制数1234321e是15(=16-1)的倍数

第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1是11(12-1)的倍数

【Tips】

B进制的数能被B-1整除,当且仅当各位数字和能被B-1整除。

第一组测试数据 10进制数123 最后添加检验码3,10进制数1233各位数字和是9,是9的倍数

第二组测试数据 16进制数78 最后添加检验码0,16进制数780各位数字和是15,是15的倍数

第三组测试数据 16进制数1234321 最后添加检验码e,16进制数1234321e各位数字和是30,是15的倍数

第四组测试数据 12进制数ab 最后添加检验码1,12进制数ab1各位数字和是22,是11的倍数

题解

思路

  • 1.就用tips的思路就可以了,我们计算能不能被整除就可以了
  • 注意:a b c d e f字母要做一个特殊的判断!

代码

#include<iostream>
using namespace std;
int main(){int t;cin>>t;int n;string b;while(t--){cin>>n>>b;int temp=0;/******************计算数字的各个位上的数字和************************/for(int i=0;i<b.length();i++){if(b[i]=='a') temp+=10;else if(b[i]=='b') temp+=11;else if(b[i]=='c') temp+=12;else if(b[i]=='d') temp+=13;else if(b[i]=='e') temp+=14;else if(b[i]=='f') temp+=15;else temp+=b[i]-'0';}int ans=n-1-temp%(n-1);/******************输出结果的调整************************/if(ans==n-1) cout<<0<<endl;else if(ans==10) cout<<'a'<<endl;else if(ans==11) cout<<'b'<<endl;else if(ans==12) cout<<'c'<<endl;else if(ans==13) cout<<'d'<<endl;else if(ans==14) cout<<'e'<<endl;else if(ans==15) cout<<'f'<<endl;else cout<<ans<<endl;}return 0;
} 

http://www.ngui.cc/el/3573941.html

相关文章

[湖南大学程序设计实训训练作业一]作业一汇总篇

作业一汇总篇写在前面题目目录与题解地址写在前面 希望写这些题解能够帮助一些同学&#xff0c;当然大多数同学是不需要的&#xff0c;因为题目并不难。 万一&#xff0c;实在是有其他的事要做&#xff0c;提交前要改变量名哦&#xff01;不要暴露了才好&#xff01; 有问题我…

[JQuery学习笔记]jQuery事件导读

jQuery事件导读写在前面jQuery事件注册单个事件注册jQuery事件处理事件处理on()绑定事件on()方法优势1on()方法优势2on()方法优势3案例&#xff1a;发布微博案例事件处理off()解绑事件自动触发事件trigger()jQuery事件对象写在前面 能够说出4种常见的注册事件能够说出on绑定事…

[湖南大学程序设计实训训练作业二]1.字符串反转2(vector+reverse或者stack)

1.字符串反转2【问题描述】【输入形式】【输出形式】【样例输入】【样例输出】题解思路代码1代码2【问题描述】 给定一个句子&#xff08;只包含字母和空格&#xff09;&#xff0c; 将句子中的单词位置反转&#xff0c;单词用空格分割, 单词之间只有一个空格&#xff0c;前后…

[湖南大学程序设计实训训练作业二]2.487-3279(次数问题用map)

2.487-3279【问题描述】【输入形式】【输出形式】【样例输入】【样例输出】题解思路代码【问题描述】 每个人都喜欢有令人难忘的电话号码。要想让电话号码变得令人难忘的一种方法是拼出一个令人难忘的单词或短语。例如&#xff0c;你可以拨打滑铁卢大学的电话&#xff0c;拨打…

[湖南大学程序设计实训训练作业二]3.缺席考试的是谁?(map过一半,需用set优化)

3.缺席考试的是谁&#xff1f;【问题描述】【输入形式】【输出形式】【样例输入】【样例输出】题解思路1思路2代码【问题描述】 程序设计考试结束了&#xff0c;传来个不好的消息&#xff1a;有一个学生没参加考试!需要尽快知道缺席考试的人是谁&#xff0c;以便尽快做出处理。…

[湖南大学程序设计实训训练作业二]5.点球大战

5.点球大战【问题描述】【输入形式】【输出形式】【样例输入】【样例输出】题解思路代码【问题描述】 在足球比赛中&#xff0c;有不少赛事&#xff0c;例如世界杯淘汰赛和欧洲冠军联赛淘汰赛中&#xff0c;当比赛双方经过正规比赛和加时赛之后仍然不分胜负时&#xff0c;需要…

[湖南大学程序设计实训训练作业二]6.飞行棋(递归模拟)

6.飞行棋【问题描述】【输入形式】【样例输入】【样例输出】题解思路代码【问题描述】 大家当年一定都下过飞行棋吧。现在Lele和Yueyue要下的棋和这个很相似&#xff0c;只是更简单一点而已。 棋盘由N个格子组成&#xff0c;分别标记为第0格到第N-1格。格子分为两种&#xff0…

[湖南大学程序设计实训训练作业二]7.棋盘

7.棋盘【问题描述】【输入形式】【输出形式】【样例输入】【样例输出】题解思路代码【问题描述】 棋盘是指一个行和列编号从1~N的NxN的二进制矩阵&#xff0c;当行号和列号之和为偶数时该矩阵对应位置为黑色的(1)&#xff0c;否则为白色的(0)。以下图示为N1、2、3时的棋盘。 …

[湖南大学程序设计实训训练作业二]8.Engine-字符串(字符串切割+结构体map存储+切割vector查询)

8.Engine-字符串写在前面【问题描述】【输入形式】【输出形式】【样例输入1】【样例输出1】【样例输入2】【样例输出2】题解思路代码写在前面 这题真的是支棱了一个上午&#xff0c;可恶啊&#xff0c;中间出了些简单的bug但是找了好久&#xff0c;可恶啊&#xff01;&#xf…

[湖南大学程序设计实训训练作业二]9.字符串压缩(贪心递归模拟)

9.字符串压缩【问题描述】【输入形式】【输出形式】【样例输入1】【样例输出1】【样例输入2】【样例输出2】【样例输入3】【样例输出3】题解思路代码【问题描述】 给定一个由n个小写字母组成的字符串s&#xff0c;需要使用最少数量的钱币来压缩它。 压缩该字符串&#xff0c;…