数字加密(20)
来源:互联网 发布:犀牛软件官网 编辑:程序博客网 时间:2024/06/05 12:04
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:1234567 368782971输出样例:
3695Q811
import java.util.*;public class Main { static Scanner in=new Scanner(System.in); public static void main(String[] args) { while(in.hasNext()){ String s1=in.next(); String s2=in.next(); int[] c=new int[s2.length()+1]; boolean flag=true; int pos=1,i,j=s1.length()-1; for(i =s2.length()-1; i >=0; i--) { if(flag){ c[pos++]=((s2.charAt(i)-'0')+(s1.charAt(j--)-'0'))%13; } else{ c[pos++]=(s2.charAt(i)-'0')-(s1.charAt(j--)-'0'); } flag=!flag; if(j==-1) break; } if(i>=0){ System.out.print(s2.substring(0,i)); }//如果要加密的数字没有到头,先输出 for (int k =pos-1; k>=1; k--) {if(k%2!=0&&c[k]>=10){if(c[k]==10) System.out.print("J");else if(c[k]==11) System.out.print("Q");else System.out.print("K"); }else if(k%2==0&&c[k]<0)System.out.print((c[k]+10));else System.out.print(c[k]); } System.out.println(); } } }
附上比较优的程序
阅读全文
0 0
- B1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- PAT1048数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- Java 如何将String转化为Int及java.lang.NumberFormatException异常处理
- u-boot-2012.04.01移植(s3c2440 开发板)
- POJ 2288-Islands and Bridges (状压DP)
- cas4.0 自定义用户验证及登录错误信息提示
- Zookeeper(六)应用实例
- 数字加密(20)
- Maven 下载jar包时进度条长时间不动
- 华为/CMCC的Portal协议研究纪要
- RXD and math(莫比乌斯函数,快速幂)
- 剑指offer--最小的K个数
- PHP+mysql 入门级通讯录(三)
- CSS网页布局时常犯的几种小错误
- 3170: [Tjoi 2013]松鼠聚会
- 面试复习——Android工程师之算法基础