求,计算year年距离N年之后,在年数里共有多少天。
答案:1 悬赏:50 手机版
解决时间 2021-02-03 05:41
- 提问者网友:十年饮冰
- 2021-02-02 21:40
求,计算year年距离N年之后,在年数里共有多少天。
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-02-02 23:11
不使用循环的话,就需要使用公式推导闰年次数了。
从公元1到X年,闰年次数为:X/4-X/100+X/400
那么,从N+1年到year年间,闰年次数为:(year/4-year/100+year/400)-(N/4-N/100+N/400)
化简为:(year-N)/4-(year-N)/100+(year-N)/400
有了上述结果,总天数就好计算了,方法是:平年数*365+闰年数*366 == (年数-闰年数)*365+闰年数*366 == 年数*365+闰年数
程序实现如下:
int year_cnt = year - N;
int leap_year_cnt = year_cnt / 4 - year_cnt / 100 + year_cnt / 400;
int total_day_cnt = year_cnt * 365 + leap_year_cnt;
额外说一下:通常像这样的算法,如果不是被极高频率的调用,使用循环实现是可以接受的,循环次数有限,性能通常不是问题。反之,使用我所说的算法虽然效率有所提高,但可能无关紧要,反而使程序更难于阅读、理解和维护。所以请酌情选择使用哪种算法。
从公元1到X年,闰年次数为:X/4-X/100+X/400
那么,从N+1年到year年间,闰年次数为:(year/4-year/100+year/400)-(N/4-N/100+N/400)
化简为:(year-N)/4-(year-N)/100+(year-N)/400
有了上述结果,总天数就好计算了,方法是:平年数*365+闰年数*366 == (年数-闰年数)*365+闰年数*366 == 年数*365+闰年数
程序实现如下:
int year_cnt = year - N;
int leap_year_cnt = year_cnt / 4 - year_cnt / 100 + year_cnt / 400;
int total_day_cnt = year_cnt * 365 + leap_year_cnt;
额外说一下:通常像这样的算法,如果不是被极高频率的调用,使用循环实现是可以接受的,循环次数有限,性能通常不是问题。反之,使用我所说的算法虽然效率有所提高,但可能无关紧要,反而使程序更难于阅读、理解和维护。所以请酌情选择使用哪种算法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯