题解 | 日期累加
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include<bits/stdc++.h> using namespace std; int n; int year,month,day,add; bool isLeapYear(int year){ return (year%400==0)||(year%4==0&&year%100!=0); } int main(){ cin>>n; while(n--){ int sum=0; int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; cin>>year>>month>>day>>add; if(isLeapYear(year)){ a[2]=29; } for(int i=1;i<month;i++){ sum+=a[i]; } sum+=day; sum+=add; int temp; for(int i=year;;i++){ if(isLeapYear(i)){ temp=366; }else{ temp=365; } if(sum<=temp){ year=i; break; } sum-=temp; } int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(isLeapYear(year)){ b[2]=29; } int month=1; for(int i=1;i<=12;i++){ if(sum<=b[i]){ printf("%d", year); printf("-"); printf("%02d", month); printf("-"); printf("%02d", sum); break; } sum-=b[i]; month++; } cout<<endl; } }