poj入门水题整理6

来源:互联网 发布:g76内螺纹编程实例 编辑:程序博客网 时间:2024/05/21 07:56

1. 2209 The King

描述:有个聪明的国王,他有个缺点,就是数不到3。现在敌军压境,他想要把自己的儿子派出去。他知道他的有些儿子像他一样聪明,有些却愚昧无知。而且他清楚的知道,他儿子们的脑力潜能,从-3到3之间的一个值(因为他只能数到3),他也知道他们取胜的机会和儿子们脑力潜能的幂之和和成比例。现在想要知道最后的战力之和。

输入:第一行是有几个儿子,第二行,幂指数的值,第三行,每个儿子的脑力潜能

输出:打败敌军的最大的可能性,就是幂之和最大值

解法:由于有了幂指数的存在,当为偶数时,负数能变成正数。当为奇数时,负数就不要加上去。


2.2365 Rope

描述:在一个平面上钉钉子,然后用绳子绕起来,绕起来的形状是个凸边形,现在想要计算绳子的长度。

输入:N钉子的个数,R钉子的半径,接下来的N行是钉子所在的xy坐标,钉子的位置按顺时针方向给出,钉子头没有重合。

输出:2位小数,表示的是绳子的长度

解法:由于是个凸边形,且又是顺时针给出的坐标,所以可以两两计算点与点的距离。然后加上钉子的周长就是绳子的长度。


3.1298 The Hardest Problem Ever(中文题见poj3749)

描述:为了保障罗马帝国文件的利益,每个字母都通过右移5位得到加密后的字母。

输入:输入均为大写字母,每个输入为:

          以START为第一行

         加密后的文件

          以END为最后一行

         最后以ENDOFINPUT结束输入

输出:加密前的文件

解法:字母题最大的技巧就是输入字母-'A',能得到该字母对于A的一个位移。加密后的数组为,a[26]=[V ,W ,X ,Y...S, T ,U ],那么'A'-A'=0,a[0]='V',得到加密后的字母,遇到空格就直接吐出去。


4.3749 破译密码

同上


3800和3983都是有bug的题。。。


5.3438 Look and Say

描述:122344111 可以描述为1个1,,2个2,1个3,2个4,3个1,这串数字连起来就是1122132431,1111111111就是10个1,也就是101

输入:N代表有几个case,接下来N行就是数字

输出:按照上述规则得到的数字

解法:读入输入,如果这个数字和前一个相同,cnt+=1,如果不一样,那么就输出cnt和前一个数字,cnt=1,最后不要忘记输出最后的数字


6.3589 Number-guessing Game

描述:就是大家以前玩过的猜数游戏,如果正确的数字是5204,而猜的数字是4902,那么0的位置和数字都对,那么就是有1个对了,1A,2和4都是正确的数字,但是在错误的位置上,所以是2B,整个结果就是1A2B

输入:T代表test case的个数,接下来T行就是正确的数字和猜测的数字

输出:正确的和错误的结果之前的差别,用*A*B这样的格式表示

解法:直接对比得出结果即可



7.1552 Doubles

描述:给出2~15个数字,得到这组数字之后,找出有多少组数字有2倍关系,比如1 4 3 2 9 7 18 22,1和2,2和4.9和18都有2倍关系,所以是3

输入:每行有一组数字,个数在2~15个,最大值不超过99,0代表每行结束,-1代表输入结束

输出:有几组2倍关系的数字

解法:

        1)直接暴力,这是一种方法。

        2)技巧:由于数字很小,最大为99,可以申请个大小为100的数组,先全部置为0,读入输入,然后将该数字对应的数组位置置为1,比如1 4 3 2 9 7 18 22,那么a[1]=1,a[4]=1,a[3]=1...a[22]=1.

然后扫一遍数组a[1]=1,那么看看a[2]是否为1 ,为1 的话加1,时间复杂度就由o(n*n)变为o(n)


8.3751 时间日期格式转换

解法:按格式读入年月日时分,0点单独处理,按格式输出即可


9.2656 Unhappy Jinjin

描述:Jinjin是个中学生,除了每天的课业外,还需要应付妈妈给她的课外作业。如果她每天学习超过8个小时,那么她就不开心,如果不开心的话,那她继续学习就会越来越不开心。你现在需要判断她是否不开心以及哪天最不开心。

输入:N,1<=N<=7,你需要分析的天数。接下来的N行有2个数字,分别代表学校的作业和课外的作业。0代表输入结束

输出:0代表Jinjin没有不开心,如果有不开心的话,输出最不开心的那一天

解法:下面有代码,自己看


10.3518 Prime Gap

描述:两个质数之间的数字就是Prime Gap,给出一个数字k,希望在Prime Gap包含数字k,然后给出这个gap的长度。

输入:数字N,在1~1299709之间

输出:gap的长度

解法:直接暴力,前一个质数<N<后一个质数,输出前后2个质数之差。如果这个数字是质数,则输出0.

           也可以试试申请个1300000大小的数组(不知道内存会不会爆),然后像第7题那样做









      










0 0