思路是对于给定的天数days,遍历每个月份的天数d,每次days递减d,如果小于0了,说明就是当前月份,做减法之前剩余的天数就是日子。只要注意闰年的时候2月有29天,然后测试下边界数据,比如说每个月的第一天和最后一天,每年的第一天和最后一天。
PS:我觉得用java写的话,这个题还有个小技巧,就是可以用calendar,这样完全不用算?
奉上java满分代码
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int year = Integer.parseInt(scanner.nextLine());
int days = Integer.parseInt(scanner.nextLine());
scanner.close();
int[] month = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
boolean isRun = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
if(isRun)
month[2] = 29;
for(int i = 1; i <= 12; i++){
if(days - month[i] > 0){
days -= month[i];
} else{
System.out.println(i);
System.out.println(days);
break;
}
}
}
}