从这篇开始,我要改编一下题目,嗯嗯
PART1:4SUM
Problem
Ivan 最近很无聊地在看考研书,看到 linux 的博客上写一些 ACM 题目后他很兴奋。为了考考 Ivan 有多牛,linux 给了他四组数字,他的任务是从每组数字中选出一个数字,使得这四个数的和为 0。可以假设这样的组合必然存在。每组数字的个数不会超过 500 个。可是 Ivan 想了一下,如果每次从每组数字中抽出一个来计算,复杂度会是 500*500*500*500=625 亿。要想不超时的话,复杂度是不能超过一千万的。Ivan 很苦恼,你能帮帮他吗?
Input
The first line of input contains four numbers, a, b, c, and d, separated by a space character, indicating the number of elements in each of the four sets. Each of these numbers is a positive integer 1 <= a, b, c, d <= 500. The following a + b + c + d lines contain the elements, each not smaller than −10000 and not larger than 10000. The elements of the first set are listed first, followed by the elements of the second set, etc.
Output
The output consists of the four integers, separated by a space character. The numbers must appear in the order in which they are listed in the input.
Sample Input
3 2 4 2
5
17
-8
-13
19
6
-9
10
0
-14
7
Sample Output
17 -13 10 -14
[warning] 如题,答案迟点再公布。[/warning]
PART2:Who’s Winner?
Problem
linux 和虫虫经常玩游戏,可是虫虫经常输的很惨烈,不知道是为什么呢? 尽管虫虫的数学很糟糕,不过今天终于玩到一种虫虫很擅长的数学游戏了。游戏是这样子玩的:
有一个整数 p,p 的初始值是 1。首先 linux 对 p 乘上一个整数,这个整数的范围是 2 到 9,这时候 p 就变成了它原来的 2 到 9 倍。接着虫虫也对 p 这样子做乘法,接着 linux 再乘…
游戏开始前,linux 和虫虫先商量好一个整数 n,1≤n<4,294,967,295。谁先使得 p≥n,谁就是赢家。
只不过很可惜,linux 的数学很不错,他也很擅长玩这个游戏。既然他们两个都玩得很厉害,请问: 给定一个数字 n,谁会成为最后的赢家?
Input
Each line of input contains one integer number n.
Output
For each line of input output one line either
Linux wins.
or
Chongchong wins.
Assume that both of them play perfectly.
Sample Input
162
17
34012226
Sample Output
Linux wins. Chongchong wins. Linux wins.
[note]这是一个博弈的过程,从后面往前面推即可。比如说如果n=18的话,无论linux第一次怎么做乘法,虫虫都能在第二次乘以一个数使得p>=n。[/note]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include<iostream> using namespace std; int main() { unsigned int n; long double lower,higher; int steps=0; while(scanf("{5f7b659ff3b2818cd787bc9e2e970b98d3e4ece1905bf98c409dc266242d6105}d",&n)!=EOF) { if(n<=9) { printf("Linux wins.n"); continue; } steps=0; higher=n/9.0; lower=n/18.0; while(lower>9) { higher/=18; lower/=18; steps+=2; } if(higher>2) steps++; if(steps{5f7b659ff3b2818cd787bc9e2e970b98d3e4ece1905bf98c409dc266242d6105}2==0) { printf("Chongchong wins.n"); } else printf("Linux wins.n"); } return 0; } |
[…] 在很久很久以前,我写了《专注都难不倒 (5)》,之后就忘了再写下去了。直至昨晚有个师弟问我 4SUM 这道题的解法,我才恍然大悟:原来我经常写 “欲知后事,且听下回分解” 这类的蠢话。而且很无可避免的是,我老忘掉。 […]
你好,4SUM 这道题目可以说下应该怎么做吗?
你的拼音真破。
chongchong
没话说了吧? 记得明早早餐请客
我最近没看考研究生的书. 我只是无聊了而已.