YTU 1010: 目标柏林
1010: 目标柏林
时间限制: 1000 Sec 内存限制: 64 MB
提交: 32 解决: 15
题目描述
在这一天,苏军结果一份传自柏林的加密电文。经初步破译,显示希特勒要调集100万兵力, 在柏林周围筑起了三层防卫圈,并集中3300架飞机,1500多辆坦克,1万门火炮和迫击炮,准备死守柏林。 形势很危机,我们需要马上破译所有密码。请你来遍个程序帮忙破译。
苏军知道德军用的加密方法是这样的: 1.获得一段文字后,求出它的长度(包括空格)len。 2.进入加密运算的第1步:把所有下标是1倍数的字符做顺时针旋转。 3.进入加密运算的第2步:把所有下标是2倍数的字符做逆时针旋转。 4.进入加密运算的第3步:把所有下标是3倍数的字符做顺时针旋转。 5.按上面的规则,第奇数步按顺时针旋转,偶数步按逆时针旋转,一直到第len步为止。
比如原文是:abcde 1.获得长度len = 5 2.1的倍数有1、2、3、4、5,所以把这5个字符按顺时针旋转,得到eabcd。 3.2的倍数有2、4,所以把这2个字符按逆时针旋转,得到ecbad。 4.3的倍数有3,所以把这1个字符按顺时针旋转,得到ecbad。 5.4的倍数有4,所以把这1个字符按逆时针旋转,得到ecbad。 6.5的倍数有5,所以把这1个字符按顺时针旋转,得到ecbad。 最后的结果是ecbad。
现在给你加密后的文章,让你还原成原来的文章。
输入
输出
样例输入
ecbad
样例输出
abcde
提示
C and C++ language can use : char input[1001]; while(gets(input)) { ... } 报告参见http://acm.zjgsu.edu.cn/Report/1009/1009.html
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include <stdio.h>
#include <string.h>
#define LEN 1000+10
void turn_right(char *c,int *a,int k)
{
int i;
char temp;
temp=c[a[k-1]];
for(i=0;i<k-1;i++)
c[a[k-1-i]]=c[a[k-2-i]];
c[a[0]]=temp;
}
void turn_left(char *c,int *a,int k)
{
int i;
char temp;
temp=c[a[0]];
for(i=0;i<k-1;i++)
c[a[i]]=c[a[i+1]];
c[a[k-1]]=temp;
}
int main()
{
char c[LEN];
int a[LEN]={0};
int len;
int i,j,k=0;
while(gets(c))
{
len=strlen(c);
for(i=len;i>=1;i--)
{
k=0;
memset(a,0,sizeof(a));
for(j=i;j<=len;j+=i)
a[k++]=j-1;
if(k==1)continue;
if(i%2==0)turn_right(c,a,k);
else turn_left(c,a,k);
}
puts(c);
}
return 0;
}
#include <string.h>
#define LEN 1000+10
void turn_right(char *c,int *a,int k)
{
int i;
char temp;
temp=c[a[k-1]];
for(i=0;i<k-1;i++)
c[a[k-1-i]]=c[a[k-2-i]];
c[a[0]]=temp;
}
void turn_left(char *c,int *a,int k)
{
int i;
char temp;
temp=c[a[0]];
for(i=0;i<k-1;i++)
c[a[i]]=c[a[i+1]];
c[a[k-1]]=temp;
}
int main()
{
char c[LEN];
int a[LEN]={0};
int len;
int i,j,k=0;
while(gets(c))
{
len=strlen(c);
for(i=len;i>=1;i--)
{
k=0;
memset(a,0,sizeof(a));
for(j=i;j<=len;j+=i)
a[k++]=j-1;
if(k==1)continue;
if(i%2==0)turn_right(c,a,k);
else turn_left(c,a,k);
}
puts(c);
}
return 0;
}
YTU 1010: 目标柏林的更多相关文章
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- AOJ 2200 Mr. Rito Post Office (floyd+DP)
题意: 快递到了:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处 ...
- HDOJ(1010)DFS+剪枝
Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 #include <stdio.h> #include ...
- Codevs 1010 过河卒 2002年NOIP全国联赛普及组
1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...
- 目标检测之YOLO V2 V3
YOLO V2 YOLO V2是在YOLO的基础上,融合了其他一些网络结构的特性(比如:Faster R-CNN的Anchor,GooLeNet的\(1\times1\)卷积核等),进行的升级.其目的 ...
- hdu 1010(迷宫搜索,奇偶剪枝)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Ja ...
- SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...
- HUAWEI HiAI亮相Droidcon柏林2018开发者峰会 开启HiAI海外生态
柏林时间6月25日到27日,华为HiAI亮相Droidcon柏林2018开发者峰会,有1200多位海外开发者参加了此次峰会,来自HUAWEI HiAI领域的多名专家携手Prisma和金山WPS,以“E ...
随机推荐
- 大数据学习——linux常用命令(一)
一.基本日常操作命令 1 查看当前所在工作目录的全路径 pwd 2 查看当前系统的时间 date 设置时间,date -s"2018-11-12" 修改时间后,需要写入硬件bios ...
- 第k小整数(树状数组)
洛谷传送门 入门难度.. 没错,但是我并不是要暴力做. 而是用树状数组来做. 先离散化,然后随便搞一搞就可以了.(晕.比暴力还慢) 如果要查找某一区间的的话可以把区间取出重新建树,然后再求.(更暴力) ...
- 【二分+交互】codeforces B. Glad to see you!
codeforces.com/contest/809/problem/B 只需要找到2个被选中的,首先,注意到将区间二等分时左侧区间为[l,mid],右侧区间为[mid+1,r],dui(mid,mi ...
- [HNOI2015]实验比较 树形dp+组合数学
在合并的时候有可以加等于,或者继续用小于, 比如siz[x]和siz[y]合并,小于的区间为max(siz[x],siz[y])<=k<=siz[x]+siz[y], 然后就是合并成多少个 ...
- PHP字符串的替换(preg_replace)
/* 正则表达式 preg_replace() */ $str = array( "如果没有一些http://www.abc.com特殊的<b>替换</b>需5求( ...
- LCA 在线倍增法 求最近公共祖先
第一步:建树 这个就不说了 第二部:分为两步 分别是深度预处理和祖先DP预处理 DP预处理: int i,j; ;(<<j)<n;j++) ;i<n;++i) ) fa[i ...
- 【POJ3254】Corn Fields(状压DP)
题意: 一个M x N矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻.问有多少种放牛方案( ...
- python(5)- 基础数据类型
一 int 数字类型 #abs(x) 返回数字的绝对值,如abs(-10) 返回 10 # ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5 # cmp(x, y) 如果 ...
- Swift--错误集:couldn’t be opened because you don’t have permission to view it
bug复现过程 把snapkit拉入代码中时,也把里面的info.plist文件拖到项目中,运行时,提示“couldn’t be opened because you don’t have perm ...
- HDU 6437 最(大) 小费用最大流
Problem L.Videos Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...