题目:
在公元 N 年 1 月 1 日,一群精灵植下了一棵高度为 h 厘米的树。这棵神奇的树每天都会长高 1 厘米。他们想知道,这棵树到了公元 2013 年 1 月1 日会有多高?
思路:
1.统计N,N+1,N+2······2012这些年里头闰年和非润年的数量。
2.即统计N,N+1,N+2······2012中4的倍数,100的倍数,400的倍数。
3.AT:不重不漏。例如:在讨论N-2012这堆数字中为4的倍数的个数时,所求值为1-2012中4的倍数减去1-(N-1)中4的倍数,即2012/4-(N-1)/4。
代码展示:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int N,h;int r;
long long sum=0;
scanf("%d %d",&N,&h);
//被4整除的-被100整除的+被400整除的
r=(2012/4-(N-1)/4)-(2012/100-(N-1)/100)+(2012/400-(N-1)/400);
sum=h+r*366+(2012-N+1-r)*365;
printf("%lld",sum);
return 0;
}