资讯专栏INFORMATION COLUMN

1048 数字加密 (20 分)java

guqiu / 1038人阅读

摘要:本题要求实现一种数字加密方法。输入格式输入在一行中依次给出和,均为不超过位的正整数,其间以空格分隔。输入样例输出样例和长度不同时需要补零,例如使得长度相等基数

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

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

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

输入样例:
1234567 368782971

输出样例:

3695Q8118

Think

A 和 B长度不同时需要补零,例如1234567 368782971
A:001234567
B:368782971
使得长度相等

code

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] ist = in.nextLine().split(" ");
        String t = "0123456789JQK",s = "";
        int bo = ist[0].length() - ist[1].length(),le;
        if(bo < 0) {
            for(int i = 0 ; i < Math.abs(bo) ; i++) {
                ist[0] = "0" + ist[0];
            }
        } else {
            for(int i = 0 ; i < bo ; i++) {
                ist[1] = "0" + ist[1];
            }
        }
        char[] A = ist[0].toCharArray(), B = ist[1].toCharArray();
        le = A.length;
    
        for(int i = le - 1 ; i >= 0 ; i--) {
            if((le - i) % 2 == 1) { //基数
                s = t.charAt((A[i] - "0" + B[i] - "0") % 13) + s;
            } else {
                s = (B[i] - A[i] + 10) % 10 + s;
            }
        }
        System.out.print(s);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73291.html

相关文章

  • 慕课网_《Java实现Base64加密》学习总结

    摘要:时间年月日星期一说明本文部分内容均来自慕课网。多用于网络加密。散列函数函数或消息摘要函数主要作用散列函数用来验证数据的完整性。 时间:2017年4月10日星期一说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://github.com/zccodere...

    verano 评论0 收藏0
  • 方法和数组就是这么简单!

    摘要:数组就是一个简单的线性序列,这使得元素访问非常快速。堆区堆内存用来存放创建的对象和数组。堆内存中的实体不再被指向时,启动垃圾回收机制,自动清除,这也是优于的表现之一中需要程序员手动清除。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242); 第三章 方法和数组 3.1 概述 还记得我们的He...

    darkerXi 评论0 收藏0
  • 【渣渣程序员踩过的坑】PHP的hash_hmac签名加密,PHP迷一样的base64_encode

    摘要:如何获取受支持的算法清单,请参见。要进行哈希运算的消息。使用生成信息摘要时所使用的密钥。设置为输出原始二进制数据,设置为输出小写进制字符串。 介绍一下问题的背景: 本人一枚小小PHPer,有一天公司的Java找到我,让我帮忙写一个接口的Demo,心想:‘最喜欢写接口了,来来来来!’,于是Java就带着Java版Demo来了,大概看了一遍,具体涉及以下几点:(不想了解的看最后一部分,就好...

    Rocture 评论0 收藏0
  • 【渣渣程序员踩过的坑】PHP的hash_hmac签名加密,PHP迷一样的base64_encode

    摘要:如何获取受支持的算法清单,请参见。要进行哈希运算的消息。使用生成信息摘要时所使用的密钥。设置为输出原始二进制数据,设置为输出小写进制字符串。 介绍一下问题的背景: 本人一枚小小PHPer,有一天公司的Java找到我,让我帮忙写一个接口的Demo,心想:‘最喜欢写接口了,来来来来!’,于是Java就带着Java版Demo来了,大概看了一遍,具体涉及以下几点:(不想了解的看最后一部分,就好...

    henry14 评论0 收藏0
  • HTTP2和HTTPS来不来了解一下?

    摘要:一端用私钥加密,另一端用公钥解密,也确保了来源目前现在好像使用了数字签名就万无一失了,其实还有问题。如果公钥被伪造了,后面的数字签名其实就毫无意义了。具有校验机制,一旦被篡改,通信双方会立刻发现。配备身份证书,防止身份被冒充。 一、前言 只有光头才能变强 HTTP博文回顾: PC端:HTTP就是这么简单 PC端:HTTP面试题都在这里 微信公众号端:HTTP就是这么简单 微信公众号端...

    asce1885 评论0 收藏0

发表评论

0条评论

guqiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<