数字加密(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();          }                    }        } 

附上比较优的程序

原创粉丝点击