PAT-Basic-1048. 数字加密

本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。

输入格式:

输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。

输出格式:

在一行中输出加密后的结果。

输入样例:

输出样例:

题目有坑,暂时还没跳出来(⊙﹏⊙)

已解决,待有空时更新……

虚拟主机竟然被D了14个多小时……

顺便补充了一个不用反转字符串的版本。


 

我考虑了输入和输出可能存在的坑,但是没有想到,当B的长度小于A的长度时,需要在B前补零以完成加密,那么这道题就存在误导性了。

原题中提到

首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:

没错,是针对B的每位数字,B本身前面没有零。

差评!(我不会说这道题我提交了30+次,无果后Google一下才发现会是这么个情况/(ㄒoㄒ)/~~

另外,当A的长度小于B的长度,剩余部分可以不做处理或者对A前补零(两者并没有什么区别)。

代码如下:

不用反转字符串的版本:

 

 

6 评论

    1. 这道题的主要问题就是在于坑的没有道理,有种题目和测试点自相矛盾的感觉,我当时也是被坑了好久……

发表评论

电子邮件地址不会被公开。 必填项已用*标注