poj 基础入门题

来源:互联网 发布:4g网络加速代码 编辑:程序博客网 时间:2024/05/21 06:29

POJ基础题

1000 A+B

1003 Hangover

1004 Financial Management

1005 I Think I Need a Houseboat

1207 The 3n + 1 problem

2017 Speed Limit

2390 Bank Interest

2509 Peter's smokes

2521 How much did the businessman lose

3086 Triangular Sums

3210 Coins

3980 取模运算

3979 分数加减法





1.1000 A+B

就是熟悉平台的一道题,下面有案例

2.1004 Financial Management

描述:

Larry毕业之后挣钱了想知道他的财务状况,他现在有他的存款清单,想知道他12个月的结余有多少

输入:

12行数字

输出:

12个月的平均值,精确到分

解法:依次读入12个月的金额,输出平均值就好,记得要加一个$


3.3980 取模运算

没什么好说的,注意洗poj的答题模式,会给出一个文件,文件里会有很多行,不止case里给出的这么少,然后和它的标准输出对比,如果都一样,就会AC了。

while((scanf("%d %d",&a,&b)!=EOF)){
这个就是读取一直到文件结尾的一种方法,poj里还会出现其他格式的结尾,题目里会有描述,注意仔细看题。
4.2521 How much did the businessman lose
描述:商人做生意有亏有赚,如果有个给了假币,商人会亏损:货物价格+找钱价格

输入:N商品价格

            M出售的价格

            P假币价格

            C找钱的价格

0 0 0 0 代表输入结束

注意:N<M,P也有可能小于M,因为买东西的不全是假币

输出:商人赔了多少钱

如果赚了,就输出负数。

解法:四个数加加减减= 。=


5.3086 Triangular Sums

描述:三角数T(n)=1+2+...+n.然后给了个例子,是边长为4的三角形,这个三角形的权重是W(n) = SUM[k = 1…n; k * T(k + 1)]

输入:N代表有几个例子,后面跟着N行数值n(1<=n<=300),

输出:N那行不输出,其余的行输出:

这是输出的第几行 n w(n)

解法:按照说明直接暴力计算就可以了,没什么大问题


6.1207 The 3n + 1 problem

有个算法,n为奇数 n=3n+1,n为偶数,n=n/2,得到的值在不断循环这个过程,直到为1则停止。

比如给出22,给出的结果序列就是22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 

22的循环长度就是16

输入:i,j 且0<,j<10000

输出:i j 和在数字ij之间,最长的循环长度

解法:设立max=0,从i开始,计算每个数字的循环长度,如果大于max,则重置max,然后输出i,j,max就可以了


7.1003 Hangover

描述:能用牌伸出桌子多远呢?最上面的伸出1/2,第二张牌伸出第2张牌的1/3,然后1/4,1/5,最下面的牌长1/(n+1)

输入:c,是0.01~5.20之间的一个数字,0.00代表结束输入,c包含3位小数

输出:需要多少张牌才能达到c这个长度

解法:就是计算1/2+1/3+...+ 1/(n + 1)>=c,这个n最小是多少

           记得输出 n空格card(s),不要少东西


8.3210 Coins

描述:Snoopy有3个硬币,他想通过翻转使这3个硬币都朝上或朝下,一次只能翻转一个硬币,一个硬币可以被翻转多次,他最后发现无论开始是怎样的配置,都可以通过2次翻达到目标,他也发现不能通过少于2次翻转来达成目标。

Snoopy现在想要知道,有n个硬币时,最少需要x次翻转能完成目标,这个x是多少。

注意:是对所有配置都翻转x次,这个x最小是多少

input:n,n<10000,0表示结束

output:输出最小的n,如果没有最小的n,就输出No Solution!(注意感叹号)


解法:

1)n为偶数时,奇数面朝上一定要奇数翻转才可以达成目标,偶数面向上一定要偶数次翻转才能达成目标,x不可能同时为奇偶,所以x不存在

2)n为奇数时,奇数面朝上全翻到朝下就是偶数面朝下全部翻到朝下等同于偶数面朝上全部翻到朝上。

      全部向上或向下时,需要偶数次翻转可以达成目标,所以x为偶数

      当有1面朝上时,因为x为偶数,所以一定要翻转那n-1个才可以达成目标,所以x至少为n-1

      x不可能大于n,此时可以把所有的硬币都翻一遍,不满足最少,所以至少为n-1


9.1002 487-3279

描述:有些电话会用字母替代数字方便记忆,以下是一些字母和数字的等价关系

A, B, and C map to 2 
D, E, and F map to 3 
G, H, and I map to 4 
J, K, and L map to 5 
M, N, and O map to 6 
P, R, and S map to 7 
T, U, and V map to 8 
W, X, and Y map to 9 

有时候为了方便记忆,也会采用不标准的格式记忆,如3-10-10-10的标准格式局势310-1010

现在希望把所有的不标准的电话号码转换为标准的格式,同时,希望在电话簿检查没有2个公司的号码一致。

输入:N代表电话簿的行数,接下来的N行表示电话簿内的电话

输出:按字母升序输出重复的电话号码空格在电话簿内出现的次数

           如果没有重复,输出No duplicates. (注意最后的点)

解法:只要将字母转化为对应的数字,去掉-,在第三位后面加上-就可以了,然后排序,计算重复次数,同时设置flag=0,如果有重复次数,flag位置1,最后如果还是0的话表示没有重复,输出No duplicates. 即可


10.1663 Number Steps

描述:按照图片方式排列的点,想知道在(x,y)是否有写数字

输入:N代表N行输入,接下来N行输入x,y

输出:在(x,y)处写的数字,如果该处没有数字的话,则写No Number

解法:自己找找规律就好,其实就是2条直线,计算下公式,看点是否落在上面


1.3979 分数加减法

解法:按题目说明一步步地写,最后注意求取最大公因数,约分求解,注意整数


2.2017 Speed Limit

描述:Bill 和Ted的里程计坏了,但是他们有个可用的秒表,所以他们可以记录速度和行走的实际,但是这个秒表记录时间的方式有问题,

Speed in miles perhourTotal elapsed time in hours202306107以表为例,前2个小时是20km/h,6-2小时是30.km/h,7-6小时是10km/h

所以整个里程就是 (2)(20) + (4)(30) + (1)(10) = 40 + 120 + 10 = 170km

输入:会有很多组数据,1 <= n <= 10,n是整数,后面跟着n行数据s,t,和上述表格格式一致, 1 <= s <= 90 and 1 <= t <= 12,-1代表输入结束

输出:车开了多远,每行后面还要输出miles

解法:按上述的解法一步步计算就好


3.2390 Bank Interest

5 5000 4

输入年利率、金额、年份,输出复利之后能拿到的金额数,注意输出整数

Year 1: 1.05 * 5000 = 5250 
Year 2: 1.05 * 5250 = 5512.5 
Year 3: 1.05 * 5512.50 = 5788.125 
Year 4: 1.05 * 5788.125 = 6077.53125 
注意:中间计算不取整,后面取整


4.2509 Peter's smokes

peter共有n根烟,还可以凭k根烟头换个新的烟,他最多可以抽多少根烟

不断循环,当n<k时,退出


5.1005 I Think I Need a Houseboat

Fred Mapper有个半岛,每天以50 平方公里的速度被侵蚀,他想知道他的地多长时间会被侵蚀

注意输出格式和最后的END OF OUTPUT.注意最后的“.”