题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴,因为每天日历上都可以看到 2。
如果日历中只显示年月日,请问从公元 1900 年 1 月 1 日到公元 9999 年 12 月 31 日,一共有多少天日历上包含 2。即有多少天中年月日的数位中包含数字 2。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
分析如下
首先需要判断是不是闰年,然后再判断年份中是否含有2,接着我分为四种情况考虑:
(1)对于年份中含有2,且该年是闰年,则该年的所有天都应该算进去,累加366天。
(2)对于年份中含有2,且该年是平年,则该年的所有天都应该算进去,累加365天。
(3)对于年份中不含有2,且该年是闰年,则该年有12*10+29+31=180天含2天数,累加即可。
(4)对于年份中不含有2,且该年是平年,则该年有12*10+28+31=179天含2天数,累加即可。
代码如下
#include<bits/stdc++.h>
using namespace std;
int main(){
int i, j, sum=0;
for(i=1900;i<=9999;i++){
int flag1=0;
if((i%4==0&&i%100!=0)||i%400==0){
flag1=1;
}
int flag=0;
int a=i;
while(a!=0){
if(a%10==2){
flag=1;
break;
}
a=a/10;
}
if(flag==1&&flag1==1){
sum+=366;
}else if(flag==1&&flag1==0){
sum+=365;
}else if(flag==0&&flag1==1){
sum+=180;
}else if(flag==0&&flag1==0){
sum+=179;
}
}
printf("%d", sum);
return 0;
}
运行结果如下
1994240