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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论