PAT 1048数字加密
本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。
输入格式:
输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
解题思路:
(1)首先需要注意的是加密是从低位到高位进行计算的,并且有一个位数多的话,比较短的那一个对应位按0来计算。
(2)处理的时候从最低位开始,将字符串反转比较好处理(字符串反转调用STL中的reverse本地可以,但是PAT的oj编译不通过,所以就写一个reverse方法),然后遍历,逐个位数来判断。需要注意的是循环的i从0开始,所以奇数位和偶数位是相反的。
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = 102;
char A[MAXN], B[MAXN], result[MAXN] = {0}; void reverse(char c[]) {
int len = strlen(c);
for (int i = 0; i < len / 2; i++) {
char temp = c[i];
c[i] = c[len - 1 - i];
c[len - 1 - i] = temp;
}
} int main() {
cin >> A >> B;
//将A和B反转,要从低位开始
reverse(A);
reverse(B);
int maxlen = strlen(A) > strlen(B) ? strlen(A) : strlen(B);
for (int i = 0; i < maxlen; i++) {
//计算当前A,B位的数字,有某一个的字符长度比较短,填0
int numA = i < strlen(A) ? A[i] - '0' : 0;
int numB = i < strlen(B) ? B[i] - '0' : 0;
//偶数位
if ((i + 1) % 2 == 0) {
int c = numB - numA;
if (c < 0) c += 10;
result[i] = c + '0';
}
else {
//奇数位
int temp = (numA + numB) % 13;
if (temp < 10) {
result[i] = temp + '0';
}
else if(temp == 10){
result[i] = 'J';
}
else if (temp == 11) {
result[i] = 'Q';
}
else if (temp == 12) {
result[i] = 'K';
}
}
}
//将结果反转
reverse(result);
printf("%s\n", result); system("pause");
return 0;
}
PAT 1048数字加密的更多相关文章
- PAT 1048 数字加密(20)(代码+思路)
1048 数字加密(20)(20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取 ...
- PAT 1048. 数字加密(20)
本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余--这里用J代表10.Q代表11.K代 ...
- PAT 1048 数字加密
https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240 本题要求实现一种数字加密方法.首先固定一个加 ...
- PAT——1048. 数字加密
本题要求实现一种数字加密方法.首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10.Q代表11.K代 ...
- PAT 乙级 1048 数字加密(20) C++版
1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...
- PAT(B) 1048 数字加密(Java)字符串
题目链接:1048 数字加密 (20 point(s)) 题目描述 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运 ...
- PAT-乙级-1048. 数字加密(20)
1048. 数字加密(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求实现一种数字加密方法.首先固 ...
- PAT 乙级 1048.数字加密 C++/Java
题目来源 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 ...
- PAT Basic 1048 数字加密 (20 分)
本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 ...
随机推荐
- javascript订阅模式浅析和基础实例
前言 最近在开发redux或者vux的时候,状态管理当中的createStore,以及我们在组件中调用的dispatch传递消息给状态管理中心,去处理一些操作的时候,有些类似我们常见到订阅模式 于是写 ...
- 用xshell连接VMware中的Linux
配置静态网址 1.配置网络连接方式 2.查看虚拟机中的网段 3.进登录linux系统,输入:ip addr 根据自己实际情况决定下一步的语句,例如本文为ens33 , 下一步为ifcfg-ens33 ...
- angularJs 指令的用法
<!DOCTYPE html><html ng-app='app'><!--A attribute属性:当做属性来使用<div xingoo></div ...
- MySQL 查询处理
当腰删除或者更新数据时,首先要雪薰出这些记录,然后再对其进行相应的 操作. 每一个操作都会产生一个虚拟表,该虚拟表作为处理的输入,这些虚拟表对用户的透明的,只有最后一步生成的虚拟表才会返回给用户.
- Java基础—String构造方法
Java基础--String构造方法 public String(): 创建一个空表字符串对象,不包含任何内容 public String(char[]chs): 根据字符数组的内容,来创建字符串对象 ...
- Redhat7 安装 yum源(亲测有效)
由于之前安装Redhat7 想安装vsftpd 使用yum install vsftpd 报错: This system is not registered to Red Hat Subscri ...
- markdown类型文件编辑大全
正文: 1.标题的几种写法: 第一种: 前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而且h1下面会有一条横线,注意,#号后面有空格 第二种: 这种方式好像只能 ...
- synchronized是对象锁还是全局锁
昆昆欧粑粑 2019-02-20 15:09:59 1148 收藏 1分类专栏: java学习 文章标签: synchronized 全局锁 对象锁 同步版权都可以锁!synchronized(thi ...
- Java常见的垃圾收集器有哪些?
守拙者_6a98关注 2020.04.11 22:06:31字数 2,135阅读 394 实际上,垃圾收集器( GC , Garbage Collector )是和具体 JVM 实现紧密相关的,不同厂 ...
- JVM中的常量池
在Java的内存分配中,总共3种常量池: ref:https://blog.csdn.net/zm13007310400/article/details/77534349 1.字符串常量池(Strin ...