2013年6月TOJ新生有奖月赛解题报告

第二次新生有奖月赛-by zhaozhengyang

A:判断日期

先判断日期是否合法,比如闰年情况下2月份日期是否大于29,月份范围必须在1到12,日期范围根据月份作出调整。在日期均合法的情况下根据年月日逐级比较

B:马虎的算式

可以先预处理,将1到9的所有情况存进数组里,然后根据输入数据判断是否符合要求,符合就输出

C:翻硬币

因为题目保证数据能过,所以对字符串a进行处理,如果a[i]!=b[i],就对a[i+1]进行调整,然后sum+1,字符串遍历一遍,答案也就出来了

D:一条线段

四个象限的情况类似,所以可以将a,b均转换为正数,然后通过计算a,b的最大公约数c,如果c>1,答案就是c-1,否则就是0

E:IP address

这题分类讨论,一种是a.b.c.d输出一串2进制,另一种是根据一串二进制数字输出a.b.c.d。可以根据判断字符串中是否有.来判断属于哪种情况。如果是第一种情况,可以用strtok对字符串进行分割,然后用atoi转换位数字,再转为二进制就可以了。第二种就简单多了,当然也是进制的转换。

F:页码分页

G:下飞行棋了哦!

H:九连环

I:操作系统之磁盘调度算法

这题我先对所有的数据进行排序,然后分三种情况讨论,第一种是f<=d[0],这样一个个往后加就行了,第二种是f>=d[t-1],与第一种类似。第三种情况下,我是用left,right两个变量来标记left表示最接近f但小于等于f的数字的编号,right则表示最接近f但大于等于f的数字的编号。如果f更接近于left,那么sum+=f-left,然后f改为d[left],left--,另一种情况处理方法类似。需要注意的是left必须大于等于0r,right必须小于等于t-1.

J:How many

可以将a.b.c.d转为e=a*256*256*256+b*256*256+c*256*256+d。然后将use中的e全部存到f数组里,并用k来统计数量。然后遇到ping时就0-k逐个判断是否在那个范围里,在就sum+1.

K:对话密码转换

这题根据题意直接输出就可以了


为解题报告打分
暂时不评分

★★
★★★
★★★★
★★★★★
发表您的评论(若贴AC代码或发表禁止言论等违禁行为将被删除并扣除积分)

|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.