前面给大家发布了一个日期源代码;
今天就用这个代码进行实操!!!
在2015年 B 组省赛第 2 题: 星系炸弹
题目论述:
星系炸弹
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = 2014;//初始化年
int month = 11;//初始化月
int day = 9;//初始化日
int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
System.out.println("请设定爆炸倒计时:");
int day1 = sc.nextInt();//爆炸倒计时
int count = 1;//计时器
while (count <= day1) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
mon[2] = 29;
}else {
mon[2] = 28;
}
day ++;
count ++;
if (day > mon[month]) {
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
}
}
}
System.out.printf("%04d年%02d月%02d日",year,month,day);
}
}
在2023年 第十四届蓝桥杯模拟赛(第三期)的第三题;
题目论述:对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
直接暴力枚举就可以了不过首先你得知道日期类的代码怎么写;
import java.util.Scanner;
public class Main {
//题目条件需要:
//年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
//例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
//由上面的条件我们可以建立一个方法
public static boolean Condition(int year,int month, int day){
int year1[] = new int[4];
int month1[] = new int[2];
int day1[] = new int[2];
int year2 = 0;
int month2 = 0;
int day2 = 0;
for (int i = 0; i < 4; i++) {
year1[i] = year % 10;
year /= 10;
year2 += year1[i];
}
for (int i = 0; i < 2; i++) {
month1[i] = month % 10;
month /= 10;
month2 += month1[i];
}
for (int i = 0; i < 2; i++) {
day1[i] = day % 10;
day /= 10;
day2 += day1[i];
}
if (year2 == month2 + day2){
return true;
}
return false;
}
//接下来就可以用到我之前的分享的日期源代码;
//这个代码挺好用的,如果比赛忘记了LocalDate这个类怎么用就可以用一下这个思路
//如果有不理解的代码可以查看我上期的博客
public static void main(String[] args) {
int year = 1900;//初始化年份
int month = 1; //初始化月份
int week = 1; //初始化星期
int day = 1; //初始化日期
int mon [] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
Scanner sc = new Scanner(System.in);
System.out.print("输入年份:");
int year1 = sc.nextInt();
System.out.print("输入月份:");
int month1 = sc.nextInt();
System.out.print("输入天份:");
int day1 = sc.nextInt();
int count = 0;
while (true){
if (Condition(year,month,day)){
count++;
System.out.println(year+"年"+ month+"月"+day +"日");
}
if ((year %4 == 0 && year%100 != 0) || year %400 == 0){
mon[2] = 29;
}else {
mon[2] = 28;
}
day++;
week++;
if (day > mon[month]) {
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
}
}
if (year == year1 && month == month1 && day == day1){
break;
}
}
System.out.println(count);
}
}