1107

来源:互联网 发布:tcga数据下载 编辑:程序博客网 时间:2024/05/29 03:59
import java.util.*;public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);for(int k1 = in.nextInt(), k2 = in.nextInt(), k3 = in.nextInt(); k1 > 0 || k2 > 0 || k3 > 0; k1 = in.nextInt(), k2 = in.nextInt(), k3 = in.nextInt()){String encrypted = in.next();final int tmp = encrypted.length();char[][] g = new char[3][tmp];int[][] gloc = new int[3][tmp];int[] glen = new int[3];locate(encrypted, g, gloc, glen);if(glen[0] > 0){k1 %= glen[0];right_rotate(g[0], k1, glen[0]);}if(glen[1] > 0){k2 %= glen[1];right_rotate(g[1], k2, glen[1]);}if(glen[2] > 0){k3 %= glen[2];right_rotate(g[2], k3, glen[2]);}char[] ans = new char[tmp];re(ans, g, gloc, glen);System.out.println(ans);}}public static void locate(String encrypted, char[][] g, int[][] gloc, int[] glen){glen[0] = glen[1] = glen[2] = 0;for(int i = 0; i < encrypted.length(); ++i){char tmp = encrypted.charAt(i);if('_' == tmp || (tmp >= 's' && tmp <= 'z')){g[2][glen[2]] = tmp;gloc[2][glen[2]] = i;++glen[2];}else if(tmp >= 'j' && tmp <= 'r'){g[1][glen[1]] = tmp;gloc[1][glen[1]] = i;++glen[1];}else{g[0][glen[0]] = tmp;gloc[0][glen[0]] = i;++glen[0];}}}public static void right_rotate(char[] a, int k, int len){if(0 == k || len == k){return;}reverse(a, 0, len - 1 - k);reverse(a, len - k, len - 1);reverse(a, 0, len - 1);}public static void reverse(char[] a, int left, int right){for(; left < right; ++left, --right){char tmp = a[left];a[left] = a[right];a[right] = tmp;}}public static void re(char[] ans, char[][] g, int[][] gloc, int[] glen){for(int i = 0; i < 3; ++i){for(int j = 0; j < glen[i]; ++j){ans[gloc[i][j]] = g[i][j];}}}}

 
原创粉丝点击