有兴趣就半忙写写
2004年ACM大赛第E题:一个研究小组正在编写一段能提取出股票市场历史报价的程序。研究小组发现未来需要的报价中有大量的重复,从而导致金钱浪费。所以新程序需要计算出一份研究人员所需要的所有历史报价日期清单。所有以前没有的但是现在需要的报价日期将提取出来,从而减少花费。需要解决的问题就是判断出需要哪些新的报价。程序的输入包括过去已经得到的报价日期范围和现在需要的报价日期范围。输出的是以前没有但是现在需要的报价日期范围。
程序输入部分:
两个正整数NX和NR。NX其中是过去日期范围的组数。NR是现在需要报价日期范围的组数。所以总共有NX+NR对输入,每对日期范围的起始日期必须小于或等于结束日期。前NX对输入代表过去已经得到的报价日期。后NR对输入代表需要的报价日期。输入为0 0时结束。
输入时间的格式为YYYYMMDD,YYYY是年范围(1700到2100),MM是月份(01到12),DD是天数。04,06,09和11月份是30天,01,03,05,07,07,10,12月份是31天。02月份在闰年是29天,平年是28天。其中闰年的计算方式为(year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
程序输出部分:
对于每种输入情况,输出用CASE(1,2,3..)后加需要提取出的日期范围。输出日期范围用美国日期格式。输出日期范围有覆盖或者是连续的必须合成为一个日期范围。如果需要的日期范围都不在过去已经得到的日期范围内,输出”no additional quotes are required.”如果日期范围由单独的一天组成,单独输出。
Sample Input
1 1
19900101 19901231
19901201 20000131
0 3
19720101 19720131
19720201 19720228
19720301 19720301
1 1
20010101 20011231
20010515 20010901
0 0
Output for the Sample Input
Case 1:
1/1/1991 to 1/31/2000
Case 2:
1/1/1972 to 2/28/1972
3/1/1972
Case 3:
No additional quotes are required.