[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 Input | Sample 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种配方,你可以选择要不要某一种配方在披萨上:
配方代码 | 配方名称 |
A | Anchovies(鯷鱼) |
B | Black Olives(黑橄榄) |
C | Canadian Bacon(加拿大培根) |
D | Diced Garlic(蒜头切块) |
E | Extra Cheese(额外的Cheese) |
F | Fresh Broccoli(新鲜甘蓝菜) |
G | Green Peppers(青椒) |
H | Ham(火腿) |
I | Italian Sausage(义大利香肠) |
J | Jalapeno Peppers |
K | Kielbasa |
L | Lean Ground Beef(牛肉) |
M | Mushrooms(香菇) |
N | Nonfat Feta Cheese |
O | Onions(洋葱) |
P | Pepperoni |
你的每个朋友提供你他想要或不想要的配方,以下面的格式表示:
+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 Input | Sample 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