UVA10878水题
2014-10-16 21:02
183 查看
对于这道题我已经无力吐槽,也许是我想象力不够,看了半天也没看出来,
而且UVA把题给成那样,懒的去数多少行,本来打算数的懂了一下就找不到数到哪了,
看了下题解也是醉了,想象力看来很重要:
输入从上往下看,可以看成题目所说的一段磁带。
题目给的信息很少,因此大部分信息要从输入输出得到。
(相当于给你一段明文跟密码,然后你破解其中的加密规则)
首先我们发现,磁带一共有43行,跟密码的字符个数一样(换行包括在内)。
可以猜测是否磁带的一行,代表一个字符。
然后我们可以发现,密码中相同的字符,在磁带里面的对应行,也是相同的。
更加坚定我们的猜测。
然后我们观察磁带里每行的结构。
其整体的格式一样,只有 “o” 的位置和数量有不同。
而且 “o” 只会在固定的7个位置出现。
则 7 个位置,一共可以表示出 2^7=128 种字符。
联系字符的整型特征(ASCII码),
可以猜测,磁带的每行表示着一个二进制数,这个二进制数的数值正好是对应字符的ASCII码。
看一下空格(ASCII码为32)的对应行 “ o . ”,
把行中的空格看作0,“o” 看作1,则可以得到二进制数0100000,正好是32。
破译完毕。
代码:
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int c[]={0,0,64,32,16,8,0,4,2,1,0};
char str[15];
gets(str);
while(gets(str)&&str[0]!='_')
{
int value=0;
int len=strlen(str);
for(int i=2;i<len;i++)
if(str[i]=='o')
value+=c[i];
printf("%c",value);
}
return 0;
}
而且UVA把题给成那样,懒的去数多少行,本来打算数的懂了一下就找不到数到哪了,
看了下题解也是醉了,想象力看来很重要:
输入从上往下看,可以看成题目所说的一段磁带。
题目给的信息很少,因此大部分信息要从输入输出得到。
(相当于给你一段明文跟密码,然后你破解其中的加密规则)
首先我们发现,磁带一共有43行,跟密码的字符个数一样(换行包括在内)。
可以猜测是否磁带的一行,代表一个字符。
然后我们可以发现,密码中相同的字符,在磁带里面的对应行,也是相同的。
更加坚定我们的猜测。
然后我们观察磁带里每行的结构。
其整体的格式一样,只有 “o” 的位置和数量有不同。
而且 “o” 只会在固定的7个位置出现。
则 7 个位置,一共可以表示出 2^7=128 种字符。
联系字符的整型特征(ASCII码),
可以猜测,磁带的每行表示着一个二进制数,这个二进制数的数值正好是对应字符的ASCII码。
看一下空格(ASCII码为32)的对应行 “ o . ”,
把行中的空格看作0,“o” 看作1,则可以得到二进制数0100000,正好是32。
破译完毕。
代码:
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int c[]={0,0,64,32,16,8,0,4,2,1,0};
char str[15];
gets(str);
while(gets(str)&&str[0]!='_')
{
int value=0;
int len=strlen(str);
for(int i=2;i<len;i++)
if(str[i]=='o')
value+=c[i];
printf("%c",value);
}
return 0;
}
相关文章推荐
- uva 10878 - Decode the tape 字符串水题 找到规律就简单了
- UVA 11945 Financial Management 水题
- uva725_一道水题(优化到了29ms)
- HDU1014 POJ1597 UVALive5492 UVA408 ZOJ1314 Uniform Generator【随机函数+水题】
- uva 10891 Game of Sum (DP水题)
- UVA 10878 - Decode the tape
- UVA 10200 Prime Time 暴力水题
- UVA 10878 - Decode the tape
- UVA 10878 Decode the tape (二进制)
- UVa 10878 Decode the tape
- uva 11078 - Open Credit System(水题)
- 水题先来一道,UVA6345
- UVa 10878 - Decode the tape 解题报告
- UVA100 POJ1207 HDU1032 The 3n + 1 problem【水题】
- uva 10878 - Decode the tape
- UVA457水题
- UVA 10878 Decode the tape
- acm-UVA494(水题)
- 水题,优化,高效(年龄排序,uva 11462)