[B] Add All
是的,题目名称就是你要做的任务:把一些数加起来。但是这对你来说一定是太简单了,所以让我们加一些东西在里面。
做加法要付出的代价(cost) 定义为这2个数的总和,所以要加1 和10 所需付出的代价为11 。假如你想要加1, 2 和3,那么有以下几种方法:
1 + 2 = 3, cost = 3 | 1 + 3 = 4, cost = 4 | 2 + 3 = 5, cost = 5 |
我希望你已经了解你的任务,就是把N 个数加起来使得付出的代价最少。
Input
输入含有多组测试资料。
每组测试资料开始有一个正整数N(2 <= N <= 5000),接下来有N 个正整数(均小于100000)。
当N=0 时代表输入结束。请参考Sample Input。
Output
对每一组测试资料输出一列,相加这N个数付出的代价最少是多少。
Sample Input | Sample Output |
3 1 2 3 4 1 2 3 4 0 | 9 19 |
[C] Number Sequence
给你一个正整数i,请你写一个程式找出在数列S 1 S 2 S 3 ...S k 中第i个位置的字元是多少。其中S k 包含从1到k的数字,一个接着一个。例如S 3 =123,S 11 = 1234567891011。
S 1 S 2 S 3 ...的前80个字元如下所示:
11212312341234512345612345671234567812345678912345678910123456789101112345678910
Input
输入的第一列有一个整数t( 1 <= t <= 25),代表以下有多少组测试资料。
每组测试资料一列。含有1个整数i( 1 <= i <= 2147483647)。请参考Sample Input。
Output
对每组测试资料输出一列,输出在数列S 1 S 2 S 3 ...S k 中第i个位置的字元是多少。
Sample Input | Sample Output |
18 |
|
[D] Excuses, Excuses!
有一个法官被一个问题困扰着,就是那些被陪审团传唤的人常常用很多没说服力的借口来逃避回答陪审团的问题。为了节省时间不要听那些蠢理由,他请你为他写一支程式在一堆借口中搜寻清单中的关键字以找出那些没说服力的借口。你必须找出借口中的关键字无论大写小是否相符。
Input
输入包含许多组资料。
- 每组资料的第一列包含两个整数。第一个数字(1<=K<=20)定义在这次搜寻中会被用到的关键字有几个。第二个数字代表(1<=E<=20)在这组资料中有几个借口要被搜寻。
- 从第二行到第K+1行每行包含一个关键字。
- 从第K+2行到第K+1+E行每行包含一个借口。
- 在关键字清单中的每一个关键字只会包含连续长L(1<=L<=20)的小写字母。
- 每一个借口会包含任何大小写字母,空白字元,或任何标点符号(例如:".,!?&),长度不会超过70个字元。
- 每个借口至少包含一个非空白字元。
Output
对每组输入的资料你必须输出清单中最烂的那个借口。
- 最烂的借口的定义就是关键字出现最多次的那个借口。
- 如果一个关键字在同一个借口中出现很多次,每一次都视为一个独立事件。
- 所谓关键字``出现"在借口中,是指关键字与借口中的某个单字一样。在借口中每个单字可能以行的开始或结尾或任何不是英文字母的字元(包括空白字元)分隔。
对每组输入的资料,你必须先输出字串`` Excuse Set # "代表这是第几组待测资料(参见sample output)。接下来的数列输出最烂的那些借口,以读入的格式输出,如果有超过一个最烂的借口你可以用任何顺序一列一列输出。
Sample Input
5 3 dog ate homework canary died My dog ate my homework. Can you believe my dog died after eating my canary... AND MY HOMEWORK? This excuse is so good that it contain 0 keywords. 6 5 superhighway crazy thermonuclear bedroom war building I am having a superhighway built in my bedroom. I am actually crazy. 1234567890.....,,,,,0987654321?????!!!!!! There was a thermonuclear war! I ate my dog, my canary, and my homework ... note outdated keywords?
Sample Output
Excuse Set #1 Can you believe my dog died after eating my canary... AND MY HOMEWORK? Excuse Set #2 I am having a superhighway built in my bedroom. There was a thermonuclear war!
[F] Tree
你的任务是找出一棵二元树中最小路径上终端节点(树叶,leaf node)的值。所谓路径乃指从根节点(root)旅行到任一终端节点。路径的值为所经过的节点的值的和(包含根节点及终端节点)。而最小路径就是指路径值最小的那条。
Input
每组测试资料2列,用来描述一棵二元树。第一列的序列为以中序旅行(inorder traversal)所经过的节点的值。第二列的序列为以后序旅行(postorder traversal)所经过的节点的值。
各列中所有的值都是整数(大于0,小于10000),且值都不同。你可以假设二元树的节点数最多10000,最少1。输入列的长度最长不会超过1000000。
Output
对每组测试资料,请输出二元树中最小路径上终端节点的值。如果有不止一条最小路径,请输出终端节点值最小的值。
Sample Input
3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 8 11 3 5 16 12 18 8 3 11 7 16 18 12 5 255 255
Sample Output
1 3 255