[翻译]ACMer 2013 Daily Training- 2nd Mar for 11x&&12x

[B] Product of digits

给你一个大于等于0 的整数N,请你你找到最小的自然数Q ,使得在Q 中所有数字(digit)的乘积等于N 。

例如:N=10, 可以找到Q=25,因为2*5=10

Input

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

每组测试资料一列有1个整数N(0 <= N <= 1000000000)

请参考Sample Input。

Output

每组测试资料输出一列,输出自然数Q ,如果Q不存在,请输出-1。

Sample InputSample Output
5 
1 
10 
123456789 
216 
26
1 
25 
-1 
389 
-1


[F] Stacks of Flapjacks

给你一叠薄煎饼,请你写一个程式来指出要如何安排才能使这些薄煎饼由上到下依薄煎饼的半径由小到大排好。所有的薄煎饼半径均不相同。

要把薄煎饼排好序需要对这些薄煎饼做翻面(flip)的动作。方法是以一抹刀插入一叠薄煎饼中,然后做翻面的动作(也就是说在抹刀上面的薄煎饼经翻面后,会依相反的次序排列)。若一叠共有n个薄煎饼,我们定义最底下的薄煎饼的位置为1,最上面的薄煎饼位置为n。当抹刀插入位置为k时,代表从位置k到位置n的薄煎饼要做翻面的动作。

一开始时,这叠薄煎饼随意堆放,并以半径大小来表示。例如:以下3叠薄煎饼(最左边那一叠8是最上面一个薄煎饼的半径)

         8 7 2
         4 6 5
         6 4 8
         7 8 4
         5 5 6
         2 2 7

对最左边那叠薄煎饼,如果我们把抹刀插在位置3(就是半径为7的那块薄煎饼的下面)的地方做翻面,就会得到中间那叠,如果我们再把抹刀插在位置1(就是半径为2的那块薄煎饼的下面)的地方做翻面,就会得到最右边那叠。

Input

每组测试资料一列,内容为这一叠薄煎饼一开始的状态。每列开始的整数(介于1到100之间)代表位于最上方薄煎饼的半径,依此类推。薄煎饼的数目介于1到30之间。请参考Sample Input。

Output

对每一组测试资料输出2列。第一列为原来那叠薄煎饼。第2列则为要使这叠薄煎饼由小到大排列所做的翻面的动作。数字代表抹刀所插入的位置。(0代表已完成)。如果已经排好了,则不需再有翻面的动作。请参考Sample Output。

Sample Input

1 2 3 4 5
5 4 3 2 1
5 1 2 3 4

Sample Output

1 2 3 4 5
0
5 4 3 2 1
1 0
5 1 2 3 4
1 2 0

[G] Pizza Anyone?

你负责替你的朋友们订披萨。他们每个人都告诉你他想要什么,不想要什么。当然,他们也都了解只有一个披萨,或许不可能所有的需求都能实现。你能订一个披萨,这个披萨能满足每个人至少一项需求吗?

卖披萨的店提供了以下16种配方,你可以选择要不要某一种配方在披萨上:

配方代码配方名称
AAnchovies(鯷鱼)
BBlack Olives(黑橄榄)
CCanadian Ba​​con(加拿大培根)
DDiced Garlic(蒜头切块)
EExtra Cheese(额外的Cheese)
FFresh Broccoli(新鲜甘蓝菜)
GGreen Peppers(青椒)
HHam(火腿)
IItalian Sausage(义大利香肠)
JJalapeno Peppers
KKielbasa
LLean Ground Beef(牛肉)
MMushrooms(香菇)
NNonfat Feta Cheese
OOnions(洋葱)
PPepperoni

你的每个朋友提供你他想要或不想要的配方,以下面的格式表示:

+O-H+P;

表示他想要配方O,或者不想要配方H,或者想要配方P。而

-E-I-D+A+J;

表示他不想要配方E,或者不想要配方I,或者不想要配方D,或者想要配方A,或者想要配方J。

Input

输入含有多组测试资料。每组测试资料包含了1到12位朋友的需求,每个朋友一列。

若遇到仅含有一个. 的一列,代表此组测试资料结束。请参考Sample Input。

Output

对每组测试资料输出一列,输出披萨上的配方代码(按字母顺序输出),使这个披萨能满足每个人至少一项需求。如果答案不只一种组合,输出任何一种组合都可以。

如果没有任何一种配方组合可以满足每个人至少一项需求,请输出:

No pizza can satisfy these requests.

输出格式请参考Sample Output。

Sample InputSample Output
+A+B+C+D-E-F-G-H;
-A-B+C+D-E-F+G+H;
-A+B-C+D-E+F-G+H;
.
+A+B+C+D;
+E+F+F+H;
+A+B-G;
+O+J-F;
+H+I+C;
+P;
+O+M+L;
+M-L+P;
.
+A+B+C+D;
+E+F+F+H;
+A+B-G;
+P-O;
+O+J-F;
+H+I+C;
+P;
+O;
+O+M+L;
-O-P;
+M-L+P;
.

Toppings:
Toppings: CELP
No pizza can satisfy these requests.

[H] Compound Words

给你许多字典中的字,你的任务是找出其中所有的2字复合字(two-word compound words)。2字复合字指的是由2个字所合成的字。例如:catfish是由cat及fish这2个字所合成的。注意:这2个字也可以是同一个字。

Input

给你字典的内容,每个字一列,都是小写字母。且字典中的字已按照字母顺序由小到大排好了。字的数目最多不会超过120000个。

Output

输出字典中所有的2字复合字,按照字母顺序由小到大。

Sample Input

a
aa
aaa
aaaa
alien
born
less
lien
never
nevertheless
new
newborn
the
zebra

Sample Output

aa
aaa
aaaa
alien
newborn

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值