ZOJ Problem Set - 1006 - Do the Untwist

import java.util.Scanner;

public class Main {
    
    private static char[] array = new char[] { '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
        'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
        'u', 'v', 'w', 'x', 'y', 'z', '.' };
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str;
        int key;
        String ciphertext;
        Integer[] plaincode;
        
        while (input.hasNext()) {
            str = input.nextLine();
            if(str.equals("0")) {
                input.close();
                break;
            }
            key = Integer.valueOf(str.split(" ")[0]);
            ciphertext = str.split(" ")[1];
            plaincode = new Integer[ciphertext.length()];
            
            for (int i = 0; i < ciphertext.length(); i++) {
                int y = (key * i) % ciphertext.length();
                int ciphercode = getciphercode(ciphertext.charAt(i));
                if(ciphercode != 27) {
                    plaincode[y] = ciphercode + i;
                } else {
                    plaincode[y] = -1 + i;
                }
            }
            for(int i = 0; i < plaincode.length; i++) {
                System.out.print(array[plaincode[i]%28]);
            }
            System.out.println();
        }
    }

    private static int getciphercode(char character) {
        for(int i = 0; i < array.length; i++) {
            if(array[i] == character) {
                return i;
            }
        }
        return 0;
    }
}

 

posted on 2018-02-04 21:24  NEU-2015  阅读(105)  评论(0编辑  收藏  举报

导航