NOJ [1271] Nth Day is Which Day
来源:互联网 发布:百度派 知乎 编辑:程序博客网 时间:2024/06/01 10:40
链接地址:http://ac.nbutoj.com/Problem/view.xhtml?id=1271
本体纯数学题
如果对于输入的数据直接for循环,肯定超时
所以,我们得缩小运算量、
该怎么办呢?
输入的N为第几天。
那么,我们可以先这样想:每400年就会出现97个闰年,400年就是146097天。我们可以先对146097求余,得到的数就是小于146097的,也就是在400年内。
那么,接下来,在剩下的小于400年的里面肯定不会出现是400的整数倍的年份。那么,每100年就会有24个闰年,100年也就是36524天。我们对36524求余,得到的数就是小于36524的,也就是在100年内了。
接着,在剩下的小于100年的里面肯定不会出现100的整数倍的年份。那么,每4年就会有一个闰年,4年也就是1461天。我们对1461求余,得到的数就是小于1461的,也就是在4年了。
然后,在剩下的小于4年的里面,前三年肯定不会出现闰年。我们对365求余,剩下来的数肯定是小于365的。
你看,我们只要简单的四个步骤就把那么大的一个数字控制在1年内了。
在把最后的一年计算一下就可以了(注意区分该年是闰年还是平年哦)。
此题还需12届的新生们努力啊。代码就不贴了、
本体纯数学题
如果对于输入的数据直接for循环,肯定超时
所以,我们得缩小运算量、
该怎么办呢?
输入的N为第几天。
那么,我们可以先这样想:每400年就会出现97个闰年,400年就是146097天。我们可以先对146097求余,得到的数就是小于146097的,也就是在400年内。
那么,接下来,在剩下的小于400年的里面肯定不会出现是400的整数倍的年份。那么,每100年就会有24个闰年,100年也就是36524天。我们对36524求余,得到的数就是小于36524的,也就是在100年内了。
接着,在剩下的小于100年的里面肯定不会出现100的整数倍的年份。那么,每4年就会有一个闰年,4年也就是1461天。我们对1461求余,得到的数就是小于1461的,也就是在4年了。
然后,在剩下的小于4年的里面,前三年肯定不会出现闰年。我们对365求余,剩下来的数肯定是小于365的。
你看,我们只要简单的四个步骤就把那么大的一个数字控制在1年内了。
在把最后的一年计算一下就可以了(注意区分该年是闰年还是平年哦)。
此题还需12届的新生们努力啊。代码就不贴了、
0 0
- NOJ [1271] Nth Day is Which Day
- 宁波工程学院 [1271] Nth Day is Which Day 输出第n天的日期 (要求算法很快速,解决超时)
- URAL 1201 Which Day Is It?
- What day is that day?
- What day is that day?
- What day is that day?
- day
- day\\\
- What is 0Day?
- Another Day Is Gone
- New day is coming
- Each day is special
- Tomorrow is another day
- tomorrow is another day
- Tomorrow is another day !
- Tomorrow is another day.
- tomorrow is another day
- what is the day
- N 封信 with N 信封
- HDU 1202 The calculation of GPA
- HDU 1266 Reverse Number
- HDU 1405 坑爹的The Last Practice
- NOJ [1201] Chihuo II - Eating in China
- NOJ [1271] Nth Day is Which Day
- NOJ [1274] The battle of Red Cliff
- NOJ [1267] Flying Chess
- NOJ [1273] So Long the String
- NOJ [1275] Play or Not Play
- NOJ [1288] Eating Sweets
- NOJ [1285] The TT Candy
- NOJ [1280] Go for a Psychological Test
- NOJ [1296] Between The Island