bestcoder 百度之星 1002 列变位法解密
这题挺水的,主要就是矩阵转换,以及字符串输入,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来说,想清楚如何写一个相应的解密器似乎有点困难,你能帮帮他吗?
第一行一个整数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)范围内的字符
对于每组数据,先输出一行
Case #i:
然后输出一行,包含一个字符串s_decrypt,表示解密后得到的明文
4 159263748 4 Hw doeetrrlloellc adoomm!,my e w 7 Toodming is best 16 sokaisan 1
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 列变位法解密相关推荐
- 字符串处理 百度之星资格赛 1002 列变位法解密
题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 */ 5 #include <cstdio> ...
- 字符串处理 2015百度之星资格赛 1002 列变位法解密
题目传送门 1 /* 2 字符串处理:要求解码,然而二维数组开不下,可以直接输出 3 只要在余数的地方判断一下就行了,vector的效率不高 4 另外:感觉麻烦的地方应该纸上写写就清楚了 5 */ 6 ...
- 2016百度之星 - 测试赛 1002 列变位法解密 (模拟)
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=695&pid=1002 列变位法解密 Accep ...
- 2015年百度之星程序设计大赛 - 资格赛:1002列变位法解密
列变位法解密 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem De ...
- ACM学习历程—BestCoder 2015百度之星资格赛1002 列变位法解密(vector容器)
Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置 ...
- HDU 百度之星(测试赛) - 1002 列变位法解密
Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置任 ...
- bestcoder 1002 列变位法解密(模拟)
Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放置 ...
- 列变位法解密--百度之星B题
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=584&pid=1002 关于百度之星的晋级规则说明 列变位法 ...
- 2015百度之星 列变位法解密
列变位法解密 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...
最新文章
- mysql登录报错 ERROR 1045 (28000)
- WCF入门的了解准备工作
- TypeError: can't pickle _thread.RLock objects
- 程序员在想些什么?拒绝盲猜,CSDN帮你精准洞察 Ta 们的心
- 从零开始,教初学者如何征战全球最大机器学习竞赛社区Kaggle竞赛
- 40.服务器搭建准备
- 高通9008刷机大法,避坑指南,救砖前提
- 阅读引擎开源项目调研总结
- petalinux2020.2离线编译配置
- app用户注册、登录原理、注册页面
- 周杰伦的歌里都有些啥?
- python爬股指期货数据_新浪期货数据接口API(实时数据/历史数据)
- 命令top动态监控进程所占系统资源
- 基于JAVA汽车租赁系统计算机毕业设计源码+系统+lw文档+部署
- 3.5亿!创维电视董事长双11直播带货,哪些细节值得借鉴?
- ElastSearch整合SpringBoot模仿京东商城实现关键字高亮显示
- MIPI CSI和DSI接口标准简介
- 银行数据安全治理案例(一)——美创科技
- 《Android源码设计模式解析与实战》读书笔记(十四)
- 启动kibana报错:Elasticsearch cluster did not respond with license information