[翻译]ACMer 2013 Daily Training- 8th Mar for 11x&&12x

[A] Andy's First Dictionary

Andy是个8岁的孩子,他梦想要制作一本他自己的字典。这并不是一件容易的事,因为他认识的字还不是那么多。他并不想要自己去想这本字典中该放哪些字,他有个聪明的主意。就是拿出他最喜欢的一本故事书,从那里面挑出所有不同的字来,然后按照字典数序列出。当然,对他来说这是一件相当花时间的工作,所以你被要求写一个程式来帮助他。

在这个问题中,一个字被定义为一连续字母所组成的字串。并且,你的程式应该是不管字母大小写的。例如: "Apple", "apple", "APPLE" 应该被视为相同的字。

Input

输入为一篇文章,最多不会超过5000 列,每列最多200 个字元。

Output

输出文章中出现的所有不同的字,每个字一列。所有的字都以小写字母输出,并且按照字典数序输出。你可以假设所有不同的字的数目不会超过5000 。

Sample InputSample Output
Adventures in Disneyland

Two blondes were going to Disneyland when they came to a fork in the
road. The sign read: "Disneyland Left."

So they went home.














a
adventures
blondes
came
disneyland
fork
going
home
in
left
read
road
sign
so
the
they
to
two
went
were
when

[B] Software CRC

你在一家有很多个人电脑的公司上班。你的老板,连一分都省博士,想要把这些个人电脑连线,但是他又不想要花钱买网路卡。由于你不小心告诉老板每台电脑出厂时就有一个非同步串列埠在上面,老板当然把脑筋动到这不用花钱的解决方案上。于是可怜的你被指派来完成这工作软体的需求,以使这些电脑之间可以连线。

你已经读了许多关于通讯的书并且知道在传送及接收讯息时,确保讯息的正确性是一个重点。典型的作法是在讯息的最后加上额外的错误检查码。这个资讯允许接收程式检查出传送的资讯是否有错误(在大多数的例子)。于是,你跑到图书馆借回了一本关于通讯厚厚的书,利用周末(当然没有加班费)研究错误检查的部分。

最后,你决定CRC(cyclic redundancy check)是最适合的错误检查方式。以下描述这个机制:

CRC Generation

待传递的讯息被视为一列长长二元数。讯息的第一个位元组(byte)被当作这二元数最重要的位元组,第二个位元组被当作第二重要的位元组,依此类推。这个二元数被称为"m"。当传送时会在"m"之后加上2个位元组的CRC检查码,然后整个二元数称为"m2"。

这个CRC的检查码被产生使得"m2"可以整除某个16位元的值"g"。所以当接收端收到一讯息,只要把他除以"g",如果余数为0即代表此讯息正确。

你也注意到,大部分建议采用的g值都是奇数,所以你决定用34943 当作g的值。现在你迫切的任务就是对待传送的讯息,写一个程式算出这个CRC的值。

例如:若要传送的讯息为:AB(二进位的表示式为:01000001 01000010),你必须算出的CRC值应为60 1B(01100000 00011011的十六进位表示式),使得01000001 01000010 01100000 00011011可以整除34943(10进位)。

Input

每组测试资料一列,含有一个待传送的讯息(不会超过1024个ASCII字元的长度),列结束字元(End of line)不被视为待传送讯息的一部份。若遇到只含# 的一列,代表输入结束(此列无须输出)。请参考Sample Input。

Output

对每组测试资料输出一列,CRC的值(以十六进位表示)。请注意:CRC的值一定介于0到34942(十进位)之间。输出格式请参考Sample Output。

Sample InputSample Output

this is a test A AB Nothing gonna change my love for you. # 




77 FD 
00 00 
0C 86 
60 1B 
57 98

[C] Happy Number

让我们定义正整数S 0中每个数字的平方和为S 1。以相同的方法我们定义S 1中每个数字的平方和为S 2,并依此类推。假如有某个S i = 1( i >= 1)则我们说S 0是一个Happy number。如果某一个数不是Happy number,那他就是一个Unhappy number。

例如: 7 是一个Happy number,因为7 -> 49 -> 97 ->130 -> 10 -> 1。

但是4 是一个Unhappy number,因为4 -> 16 -> 37 -> 58 -> 89 -> 145 -> 42 -> 20 -> 4,永远也无法产生1。

Input

输入的第一列有一个整数代表以下有多少组测试资料。

每组测试资料一列含有1个正整数N( N < 10 9)。

Output

对每组测试资料输出一列,输出这是第几组测试资料,以及N为Happy number 或Unhappy number。输出格式请参考Sample Output。

Sample Input

Sample Output




13

Case #1: 7 is a Happy number. 
Case #2: 4 is an Unhappy number. 
Case #3: 13 is a Happy number.

[D] All in All

给你2个字串s,t,请你写一个程式判断是否s是t的子字串。也就是说当你移走t字串中的某些字元后,剩下的字串就是s。

Input

每笔测试资料一列。每列有2个字串,s及t,以空白分隔。

Output

对每一列输入,请输出是否s是t的子字串。

Sample Input

abc abc
sequence subsequence 
person compression
VERDI vivaVittorioEmanueleReDiItalia 
caseDoesMatter CaseDoesMatter

Sample Output

Yes
Yes
No
Yes
No

[E] The Blocks Problem

在早期人工智慧的领域中常常会用到机器人,在这个问题中有一支机器手臂接受指令来搬动积木,而你的任务就是输出最后积木的情形。

一开始在一平坦的桌面上有n块积木(编号从0到n-1)0号积木放在0号位置上,1号积木放在1号位置上,依此类推,如下图。

机器手臂有以下几种合法搬积木的方式(a和b是积木的编号):

  • move a onto b 
    在将a搬到b上之前,先将a和b上的积木放回原来的位置(例如:1就放回1的最开始位罝)
  • move a over b 
    在将a搬到b所在的那堆积木之上之前,先将a上的积木放回原来的位罝(b所在的那堆积木不动)
  • pile a onto b 
    将a本身和其上的积木一起放到b上,在搬之前b上方的积木放回原位
  • pile a over b 
    将a本身和其上的积木一起搬到到b所在的那堆积木之上
  • quit 
    动作结束

前四个动作中若a=b,或者a, b在同一堆积木中,那么这样的动作算是不合法的。所有不合法的动作应该被忽略,也就是对各积木均无改变。

Input

输入含有多组测试资料,每组测试资料的第一列有一个正整数n(0 < n < 25),代表积木的数目(编号从0到n-1)。接下来为机​​器手臂的动作,每个动作一列。如果此动作为quit ,代表此组测试资料输入结束。你可以假设所有的动作都符合上述的样式。请参考Sample Input。

Output

每组测试资料输出桌面上各位置积木的情形(每个位置一列,也就是共有n列),格式请参考Sample Output。

Sample Input

10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit
4
pile 0 over 1
pile 2 over 3
move 1 onto 3
quit

Sample Output

0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9:
0: 0
1:
2: 2
3: 3 1

[F] My T-shirt suits me

我们的朋友Victor参加一个环保团体。它的老板要他把N 件T-shirt 分给M 个义工,每人一件。在这里N 一定是6 的倍数,且N >= M。T-shirt 有6种size, 分别是:XXL, XL, L, M, S, XS。每种size T-shirt 的数量都一样。现在Victor 有一个小问题,因为每个义工都只有2种T-shirt 的size 适合他。

你必须写一个程式来决定是否Victor 可以发给每个义工一件适合他们的T-shirt。假如N 不等于M,那可以有一些T-shirt 剩下。

Input

输入的第一列有一个整数代表以下有几组测试资料。每组测试资料的第一列有2个正整数N, M。N是6的倍数,1 <= N <= 36,代表T-shirt的数目。M ,1 <= M <= 30,代表义工的数目,N >= M。接下来的M列,每列有2个size,分别代表义工适合的size。

Output

每组测试资料输出一列,输出能否发给每个义工一件适合他们的T-shirt。

Sample InputSample Output
3
18 6
L XL
XL L
XXL XL
S XS
MS
ML
6 4
S XL
LS
L XL
L XL
6 1
LM
YES
NO
YES












[G] Modular Fibonacci

费伯那西数列(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ......)定义如下:

0 = 0 
1 = 1 
i = F i-1 + F i-2    for i>1

给你n和m,请你写一个程式算出n = F n mod 2 m。(0 <= n <= 2147483647, 0 <= m < 20)

注意:a mod b的结果为a 除以b 的余数。

Input

输入含有多组测试资料。每组测试资料一列含有2个整数n,m。

Output

对每组测试资料输出一列n

Sample InputSample Output
11 7
11 6
7 0
7 1
7 2
7 3 
89
25
0
1
1
5 

[H] Children's Game

现在,有许多给小孩子玩的数字游戏,这些游戏玩起来简单,但要创造一个就不是那么容易的了。在这,我们将介绍一种有趣的游戏。

你将会得到N个正整数,你可以将一个整数接在另一个整数之后以制造一个更大的整数。例如,这有4个数字123, 124, 56, 90,他们可以制造下列整数─ 1231245690, 1241235690, 5612312490, 9012312456, 9056124123....等,总共可以组合出24(4!)种数字。但是,9056124123是最大的那一个。

你可能会想这是个简单的事情,但对刚有数字概念小孩来说,这会是个简单的任务吗?

Input

输入含有多组测试资料。

每组测试资料两列,第一列为一个正整数N(N <= 50),下一列将有N 个正整数。

当N=0代表输入结束。请参考Sample Input。

Output

对每一笔测试资料输出一列,输出利用这N个整数可结合成的最大整数。

Sample InputSample Output
4
123 124 56 90
5
123 124 56 90 9
5
9 9 9 9 9
3
12 123 1231
0
9056124123
99056124123
99999
123123112




Translated by Simon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值