import java.util.Scanner;
public class 螺旋加密 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int R = sc.nextInt();
        int C = sc.nextInt();
        String str = sc.nextLine();
        str = str.trim();
        char[][] arr =new char[R][C];
        int o = R*C;
        int ten = 0;
        String two = "";
        int n = 0;
        String STR = "";
        for (int i = 0; i < str.length(); i++) {             //按要求处理为二进制字符串
            ten = str.charAt(i);
            if (str.charAt(i)==32){
                ten = 0;
                two = Integer.toString(ten,2);
            }else {
                ten = ten-64;
                two = Integer.toString(ten,2);
            }
            n = 5-two.length();
            for (int j = 0; j < n; j++) {
                two = "0"+two;
            }
            STR = STR+""+two;
            n = 0;
        }
        o = o-STR.length();
        for (int i = 0; i < o; i++) {
            STR = STR+"0";
        }
        //System.out.println(STR);
        int z = 0;                //左
        int y = C-1;              //右
        int s = 0;                //下
        int x = R-1;              //上
        int i = 1;
        int a = 0;
        for (int j = 0; j < STR.length(); j++) {                    //将该字符串按回型录入二维数组
            if (i%4==1&&z<=y){
                for (int k = z; k <= y; k++) {
                    arr[s][k] = STR.charAt(a);
                    a++;
                }
                s++;
                i++;
            }else if (i%4==2&&s<=x){
                for (int k = s; k <= x; k++) {
                    arr[k][y] = STR.charAt(a);
                    a++;
                }
                y--;
                i++;
            }else if (i%4==3&&y>=z){
                for (int k = y; k >= z; k--) {
                    arr[x][k] = STR.charAt(a);
                    a++;
                }
                x--;
                i++;
            }else if (i%4==0&&x>=s){
                for (int k = x; k >= s; k--) {
                    arr[k][z] = STR.charAt(a);
                    a++;
                }
                z++;
                i++;
            }
        }
        for (int j = 0; j < R; j++) {
            for (int k = 0; k < C; k++) {
                System.out.print(arr[j][k]);
            }
        }
    }
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
 
发表评论 取消回复