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:对话密码转换
这题根据题意直接输出就可以了