题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝特别喜欢2,今年是公元2020年,他特别高兴,因为每天日历上都可以看到2。
如果日历中只显示年月日,请问从公元1900年1月1日到公元9999年12月31日,一共有多少天日历上包含2。即有多少天中年月日的数位中包含数字2。
运行限制
·最大运行时间: 1s·最大运行内存:128M
public class Main {
static int[] w={0,31,28,31,30,31,30,31,31,30,31,30,31};
static int y=1900,m=1,d=1;
public static void main(String[] args) {
int ans=0;
//先判断再让日期++ 到最后一天其实已经结束循环了
while (y!=9999||m!=12||d!=31){
if ((y%4==0&&y%100!=0)||y%400==0){
w[2]=29;
}else {
w[2]=28;
}
//判断条件
if (check()){
ans++;
}
d++;
if (d>w[m]){
m++;
d=1;
}
if (m>12){
m=1;
y++;
}
}
System.out.println(ans+1);//最后一天没有进入循环。手动+1
}
public static boolean check(){
int a=y;
while (a>0){
if (a%10==2){
return true;
}
a/=10;
}
int b=m;
while (b>0){
if (b%10==2){
return true;
}
b/=10;
}
int c=d;
while (c>0){
if (c%10==2){
return true;
}
c/=10;
}
return false;
}
}