本题很简单,我是用c++去写的,首先去定义2个整形数组,并且每个数组都存放12个,代表12个月份的天数,再利用判断年份,再去决定去使用哪一个,决定使用那一个数组之后,就可以对该数组进行遍历,设置一个变量去累加月份天数,一旦累加和比day大或相等,break,就跳出循环,这是数组位置I+1就是月份,(应为数组索引是从0开始的,而月份是从一开始的),让在截断的数组中开始遍历,用day减去前面之前的满月份的天数就是剩下的天数。
#include<iostream>
using namespace std;
int main()
{
int arr1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int arr2[12]={31,29,31,30,31,30,31,31,30,31,30,31};//run
int year,day,sum=0,i,j;
cin>>year;
cin>>day;
if(year%4==0 && year%100!=0 || year%400==0) {
for(i=0;i<12;i++){
sum+=arr2[i];
if(sum>=day) break;
}
for(j=0;j<i;j++){
day-=arr2[j];
}
}
else{
for(i=0;i<12;i++){
sum+=arr1[i];
if(sum>=day) break;
}
for(j=0;j<i;j++){
day-=arr1[j];
}
}
cout<<i+1<<endl<<day;
}
python语言就对日期有着自己datetime库,可以利用他去写;
from datetime import datetime
def calculate_date(year, total_days):
# 计算出年初的日期
start_date = datetime(year, 1, 1)
# 根据总天数计算出距离年初的天数
days_since_start = total_days - 1 # 减1是因为年初已经算一天了
# 根据距离年初的天数计算出对应的日期
target_date = start_date + timedelta(days=days_since_start)
# 返回目标日期的月份和日期
return target_date.month, target_date.day
# 示例用法
year = int(input())
total_days = int(input())
month, day = calculate_date(year, total_days)
print(target_date.month)
print(target_date.day)