AT54割り切れる日付(整除日)

4 篇文章 1 订阅
该博客介绍了一个Java程序,用于寻找输入日期之后的下一个整除日。程序首先判断输入日期是否为整除日,然后通过循环计算直到找到满足整除条件的日期。输入日期范围限定在1000年至2999年间,输出格式符合指定要求。
摘要由CSDN通过智能技术生成

题目详情:
高桥君很喜欢“整除日”。

“整除日”就是指日期中,年÷月÷日的值是整数的日期。

比如说2012年5月2日这一天,因为2012÷5÷2=201.2,结果不是整数,所以这天不是“整除日”。

因为高桥君实在太喜欢“整除日”了,总是盼着下一个“整除日”,所以他每天都要查一下今天是不是“整除日”。

他还很想知道下一个“整除日”什么时候到来。

输入一个日期,他希望输出这个日期之后最近的“整除日”。特别地,如果输入就是“整除日”,那么就输出输入的这个日期。

输入格式:

输入格式如下:

Y/M/D,表示Y年M月D日,Y为4位,M、D为两位,如果不足,会在前面补上0。

输出格式:

输出也按输入的格式输出,即XXXX/XX/XX,位数不足则用0补齐。

最后换行。

范围:

输入日期在1000/01/01和2999/12/31之间。
直接上代码

import java.util.Scanner;
public class AT54 {
	static int[] M= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int y=sc.nextInt();
		int m=sc.nextInt();
		int d=sc.nextInt();
		if(y%400==0||y%4==0&&y%100!=0) {
			M[m]=29;
		}else M[m]=28;
		
		while(y%(d*m)!=0)
		{
		//一下是解决日期问题的固定模版,
		//上面先判断一下闰年与平年的2月份天数,
		//当d超出这个月的最大天数,就重置为1,月份m加1;
		//当月份超过12月,月份重置为1,年数加1.
			d++;
			if(d>M[m]) {
				d=1;
				m++;
			}
			if(m>12) {
				m=1;
				y++;
			}
		}
		System.out.printf("%04d/%02d/%02d",y,m,d);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值