码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ题目769乘数密码

时间:2016-08-29 09:09:33      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

-----------------------------------------

这道题目是有一点小技巧的,因为取模运算没办法还原所以只好计算所有存储起来然后找映射,但是存储数据的使用场景是解密,再存储从明文到密文的映射就不太合适了,于是就存储从密文到明文的映射,这样子的话解密的时候就可以线性的从密文到明文。

AC代码:

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args) throws IOException {
 8         
 9         BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));;
10         
11         boolean first=true;
12         
13         while(first || reader.ready()){
14             first=false;
15             
16             String s=reader.readLine();
17             String ss[]=s.split("\\s{1,}");
18             initMapping(Integer.parseInt(ss[1]));
19             System.out.println(encoding(ss[0]));
20         }
21     }
22     
23     private static int[] mapping=new int[26];
24     
25     public static void initMapping(int k){
26         for(int i=0;i<mapping.length;i++){
27             mapping[k*i%26]=i;
28         }
29     }
30     
31     public static char[] encoding(String s){
32         char cs[]=s.toCharArray();
33         for(int i=0;i<cs.length;i++){
34             cs[i]=(char) (mapping[cs[i]-‘A‘]+‘A‘);
35         }
36         return cs;
37     }
38     
39 }

 

题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=769

NYOJ题目769乘数密码

标签:

原文地址:http://www.cnblogs.com/cc11001100/p/5816579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!