题目
源地址:
http://poj.org/problem?id=2039
理解
找规律的题目。
首先看一下加密的方式:
原文为theresonoplacelikehomeonasnowynightx
,分成N列来写,没有写满的用x填充,写成如下队列:
t o i o y
h p k n n
e l e a i
r a h s g
e c o n h
s e m o t
n l e w x
对于奇数行,从左向后书写,对于偶数行,从右向左书写,得到密文:
toioynnkpheleaigshareconhtomesnlewx
显然,解密的方式就是原样还原回去。
一共进行N次读入,对于第i次读取,用j定位行数。
如果j为偶数,输出N*j+i
;
如果j为奇数,输出N*(j+1)-1-i
。
代码
#include <cstdio>
#include <cstdlib>
#include <cstring>
char str[210];
int N;
int i, j;
int len, M;
int main(int argc, char const *argv[])
{
while (scanf("%d", &N), N != 0)
{
getchar();
gets(str);
len = strlen(str);
M = (int)((double)N / (double)len + 0.999999);
for (i = 0; i < N; i++)
{
for (j = 0; j * N < len; j++)
{
if (j % 2 == 0)
{
printf("%c", str[N * j + i]);
}
else if (j % 2 == 1)
{
printf("%c", str[N * (j + 1) - 1 - i]);
}
}
}
printf("\n");
}
return 0;
}
更新日志
- 2014年08月06日 已AC。