UVA之10878 - Decode the tape

【题目】

Your boss has just unearthed a roll of old computer tapes. The tapes have holes in them and might contain some sort of useful information. It falls to you to figure out what is written on them.

Input

The input will contain one tape.

Output

Output the message that is written on the tape.

Sample Input Sample Output
___________
| o   .  o|
|  o  .   |
| ooo .  o|
| ooo .o o|
| oo o.  o|
| oo  . oo|
| oo o. oo|
|  o  .   |
| oo  . o |
| ooo . o |
| oo o.ooo|
| ooo .ooo|
| oo o.oo |
|  o  .   |
| oo  .oo |
| oo o.ooo|
| oooo.   |
|  o  .   |
| oo o. o |
| ooo .o o|
| oo o.o o|
| ooo .   |
| ooo . oo|
|  o  .   |
| oo o.ooo|
| ooo .oo |
| oo  .o o|
| ooo . o |
|  o  .   |
| ooo .o  |
| oo o.   |
| oo  .o o|
|  o  .   |
| oo o.o  |
| oo  .  o|
| oooo. o |
| oooo.  o|
|  o  .   |
| oo  .o  |
| oo o.ooo|
| oo  .ooo|
|  o o.oo |
|    o. o |
___________
A quick brown fox jumps over the lazy dog.

Problemsetter: Igor Naverniouk

Special thanks: BSD games ppt.

【解析】

输入从上往下看,可以看成题目所说的一段磁带。

题目给的信息很少,因此大部分信息要从输入输出得到。

(相当于给你一段明文跟密码,然后你破解其中的加密规则)

首先我们发现,磁带一共有43行,跟密码的字符个数一样(换行包括在内)。

可以猜测是否磁带的一行,代表一个字符。

然后我们可以发现,密码中相同的字符,在磁带里面的对应行,也是相同的。

更加坚定我们的猜测。

然后我们观察磁带里每行的结构。

其整体的格式一样,只有 “o” 的位置和数量有不同。

而且 “o” 只会在固定的7个位置出现。

则 7 个位置,一共可以表示出 2^7=128 种字符。

联系字符的整型特征(ASCII码),

可以猜测,磁带的每行表示着一个二进制数,这个二进制数的数值正好是对应字符的ASCII码。

看一下空格(ASCII码为32)的对应行 “ o  .   ”,

把行中的空格看作0,“o” 看作1,则可以得到二进制数0100000,正好是32。

破译完毕。

【代码】

[cpp] view
plain
copy

  1. /*********************************
  2. *   日期:2013-5-3
  3. *   作者:SJF0115
  4. *   题号: 10878 - Decode the tape
  5. *   来源:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1819
  6. *   结果:AC
  7. *   来源:UVA
  8. *   总结:
  9. **********************************/
  10. #include <stdio.h>
  11. #include <string.h>
  12. int c[] = { 0, 0, 64, 32, 16, 8, 0, 4, 2, 1, 0};
  13. int main() {
  14. char str[15];
  15. int value,i;
  16. //freopen("C:\\Users\\XIAOSI\\Desktop\\acm.txt","r",stdin);
  17. gets(str);
  18. while(gets(str) && str[0] != ‘_‘){
  19. value = 0;
  20. int len = strlen(str);
  21. for(i = 2;i < len;i++){
  22. if(str[i] == ‘o‘){
  23. value += c[i];
  24. }
  25. }
  26. printf("%c",value);
  27. }
  28. }

UVA之10878 - Decode the tape,布布扣,bubuko.com

时间: 2024-10-16 15:27:29

UVA之10878 - Decode the tape的相关文章

UVA 10878 Decode the tape

终于在UVA上看到一题短的题目,高兴了一下.看完题目以后就懵了.然后就找规律了....... 发现每一行都代表一个字母,然后我就从a开始一个个的对照,把他写出来.然后就发现了某种规律:每行的重要位置都是由'o'和'-'组成的,数一下发现恰好有7个,然后就想到了阿斯克码.果然第一个代表2^6,第二个代表2^5,以此类推--如果是'o'就代表1*2^x,否则就是0,相加以后的值就是字母的阿斯克码. 前两次交居然都RE了... #include<stdio.h> #include<string

UVA10878 Decode the tape

阿兰·图林说:"机器的高频率令我震惊." 最早的时候,计算机的数据及程序记录卡片上,后来出现了纸带. 问题链接:UVA10878 Decode the tape. 题意简述:本题的题目是纸带编码.输入输入模仿过去的纸带,其中的"|"纸带里是没有的.纸带上信息有7位,通过穿孔实现,有孔的为1(用"o"表示),没孔的地方为0(用空格表示).中间有一串空用于机械带动纸带,用"."表示. 问题分析:用输入数据模拟纸带数据.输入的数据放

小白书训练-Decode the tape

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1819 题意:纸带打孔来保持二进制数,打孔便是1,否者为0.这个带子用ASCII保存了一个字符串,一个模拟.用数组使劲RE和WA,无语了.还是一个一个读入过掉的. 代码: #include <iostream> #include <cstdio> using

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

UVA 10878-Decode the tape(模拟)

Decode the tape Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description "Machines take me by surprise with great frequency." Alan Turing Your boss has just unearthed a roll of old computer tapes. The

UVA 624 CD

CD Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 62464-bit integer IO format: %lld      Java class name: Main You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music

uva 753 A Plug for UNIX (最大流)

uva 753 A Plug for UNIX You are in charge of setting up the press room for the inaugural meeting of the United Nations Internet eXecutive (UNIX), which has an international mandate to make the free flow of information and ideas on the Internet as cum

Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization

A code sequence made up multiple instructions and specifying an offset from a base address is identified in an object file. The offset from the base address corresponds to an offset location in a memory configured for storing an address of a variable

UVa 213 Message Decoding(World Finals1991,字符串)

 Message Decoding  Some message encoding schemes require that an encoded message be sent in two parts. The first part, called the header, contains the characters of the message. The second part contains a pattern that represents the message. You must