这题挺水的,主要就是矩阵转换,以及字符串输入,getchar();;;;;;;

列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任何字符,完成后按列读取即成密文。

比如:

原文:123456789

密钥:4

变换后的矩阵:

1234

5678

9xxx

(最后的几个x表示无任何字符,不是空格,不是制表符,就没有任何字符,下同)

密文:159263748

再比如:

原文:Hello, welcome to my dream world!

密钥:7

变换后的矩阵:

Hello,

welcome

to my

dream w

orld!xx

密文:

Hw doeetrrlloellc adoomm!,my e w

实现一个利用列变位法的加密器对Bob来说轻而易举,可是,对Bob来说,想清楚如何写一个相应的解密器似乎有点困难,你能帮帮他吗?

Input

第一行一个整数TT,表示TT组数据。

每组数据包含22行

第一行,一个字符串s(1 \leq |s| \leq 1e5)s(1≤∣s∣≤1e5),表示经过列变位法加密后的密文

第二行,一个整数K(1 \leq K \leq |s|)K(1≤K≤∣s∣),表示原文在使用列变位法加密时的密钥

输入保证密文字符串中只含有ASCII码在[0x20,0x7F)[0x20,0x7F)范围内的字符

Output

对于每组数据,先输出一行

Case #i:

然后输出一行,包含一个字符串s_decrypt,表示解密后得到的明文

Sample Input
4
159263748
4
Hw doeetrrlloellc adoomm!,my  e w
7
Toodming is best
16
sokaisan
1

Sample Output
Case #1:
123456789
Case #2:
Hello, welcome to my dream world!
Case #3:
Toodming is best
Case #4:
sokaisan

#include<stdio.h>
#include<string.h>
char a[100020];
int main()
{int n,t,m,q,g=0;scanf("%d",&n);getchar();while(n--){int w=0,z=0,k=0;gets(a);scanf("%d",&m);getchar();int p=strlen(a);t=p/m+1;q=p%m;g++;printf("Case #%d:\n",g);for(int i=0; i<t; i++){z=0;for(int j=i; j<p; ){if(k==p)break;k++;z++;if(z>q){printf("%c",a[j]);j+=t-1;}else{printf("%c",a[j]);j+=t;}}}printf("\n");}}

bestcoder 百度之星 1002 列变位法解密相关推荐

  1. 字符串处理 百度之星资格赛 1002 列变位法解密

    题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 */ 5 #include <cstdio> ...

  2. 字符串处理 2015百度之星资格赛 1002 列变位法解密

    题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 另外:感觉麻烦的地方应该纸上写写就清楚了 5 */ 6 ...

  3. 2016百度之星 - 测试赛 1002 列变位法解密 (模拟)

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=695&pid=1002 列变位法解密  Accep ...

  4. 2015年百度之星程序设计大赛 - 资格赛:1002列变位法解密

    列变位法解密  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) Problem De ...

  5. ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)

    Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置 ...

  6. HDU 百度之星(测试赛) - 1002 列变位法解密

    Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任 ...

  7. bestcoder 1002 列变位法解密(模拟)

    Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置 ...

  8. 列变位法解密--百度之星B题

    http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=584&pid=1002 关于百度之星的晋级规则说明 列变位法 ...

  9. 2015百度之星 列变位法解密

    列变位法解密 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...

最新文章

  1. mysql登录报错 ERROR 1045 (28000)
  2. WCF入门的了解准备工作
  3. TypeError: can't pickle _thread.RLock objects
  4. 程序员在想些什么?拒绝盲猜,CSDN帮你精准洞察 Ta 们的心
  5. 从零开始,教初学者如何征战全球最大机器学习竞赛社区Kaggle竞赛
  6. 40.服务器搭建准备
  7. 高通9008刷机大法,避坑指南,救砖前提
  8. 阅读引擎开源项目调研总结
  9. petalinux2020.2离线编译配置
  10. app用户注册、登录原理、注册页面
  11. 周杰伦的歌里都有些啥?
  12. python爬股指期货数据_新浪期货数据接口API(实时数据/历史数据)
  13. 命令top动态监控进程所占系统资源
  14. 基于JAVA汽车租赁系统计算机毕业设计源码+系统+lw文档+部署
  15. 3.5亿!创维电视董事长双11直播带货,哪些细节值得借鉴?
  16. ElastSearch整合SpringBoot模仿京东商城实现关键字高亮显示
  17. MIPI CSI和DSI接口标准简介
  18. 银行数据安全治理案例(一)——美创科技
  19. 《Android源码设计模式解析与实战》读书笔记(十四)
  20. 启动kibana报错:Elasticsearch cluster did not respond with license information

热门文章

  1. android studio实验二 Activity及常用布局和控件的使用
  2. adc0832工作原理详解_单片机ADC的工作原理
  3. [Signal]软阈值与硬阈值
  4. 基于Spring boot的图书馆图书借阅管理系统的设计与实现
  5. intellij idea JDK设置
  6. 上市公司开源的HIS系统,可下载源代码体验
  7. 【嵌入式基础】基于IIC和SPI协议的温湿度采集与OLED显示
  8. ORACLE的统计分析
  9. 我的世界神秘时代安卓java版_我的世界神秘时代4
  10. jQuery 入门教程