原题链接:生日日数
////////////////////////////////////
第一种方法
////////////////////////////////////
import java.time.LocalDate;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int y=sc.nextInt();
int m=sc.nextInt();
int d=sc.nextInt();
LocalDate begin=LocalDate.of(y,m,d);
LocalDate end=LocalDate.of(y+40,m,d);
int days=0;
while(!begin.isAfter(end)){
begin=begin.plusDays(1);
days++;
if(days==10000){
String[]s=begin.toString().split("-");
System.out.printf("%s-%d-%d\n",s[0],Integer.parseInt(s[1]),Integer.parseInt(s[2]));
break;
}
}
}
}
}
////////////////////////////////////
第二种方法
////////////////////////////////////
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int Y=sc.nextInt();
int M=sc.nextInt();
int D=sc.nextInt();
int sum=0;
switch(M){
case 1:case 3:case 5:case 7:case 8:case 10:case 12: sum+=31-D;break;
case 4:case 6:case 9:case 11:sum+=30-D;break;
case 2:if(isrun(Y)) sum+=29-D; else sum+=28-D;break;
}
for (int i=M+1; i <=12; i++) {
switch(i){
case 1:case 3:case 5:case 7:case 8:case 10:case 12: sum+=31;break;
case 4:case 6:case 9:case 11:sum+=30;break;
case 2:if(isrun(Y)) sum+=29;
else sum+=28;break;
}
}
int gety=0; int getm=0;int getd=0; boolean notfull=true;
for (int i = Y+1; i <=3000; i++){
gety=i;
if(isrun(i)){
if(sum+366<10000) sum+=366;
else if(sum+366==10000){ sum+=366;getm=12;getd=31; notfull=false;break;}
else break;
}
else{ if(sum+365<10000) sum+=365;
else if(sum+365==10000){ sum+=365;getm=12;getd=31;notfull=false;break; }
else break;
}
}
if(notfull){
for (int i=1; i<=12; i++) {
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
if(sum+31<10000){sum+=31;}
else if(sum+31==10000){sum+=31;getd=31;getm=i;break;}
else{ getd=10000-sum;getm=i; break;}
}
if(i==4||i==6||i==9||i==11){
if(sum+30<10000){sum+=30;}
else if(sum+30==10000){sum+=30;getd=30;getm=i;break;}
else{ getd=10000-sum;getm=i;break;}
}
if(i==2){
if(isrun(gety)){
if(sum+29<10000){sum+=29;}
else if(sum+29==10000){sum+=29;getd=29;getm=i;break;}
else{ getd=10000-sum;getm=i;break;}
}
else{
if(sum+28<10000){sum+=28;}
else if(sum+28==10000){sum+=28;getd=28;getm=i;break;}
else{ getd=10000-sum;getm=i;break;}
}
}
}
}
System.out.println(gety+"-"+getm+"-"+getd);
}
}
public static boolean isrun(int y){
if(y%4==0&&y%100!=0||y%400==0) return true;
return false;
}
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复