日期差值

#include <iostream>
using namespace std;
int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
};
bool is_leap(int year){return (year%4==0&&year%100!=0||year%400==0);
}int main() {int time1,time2,y1,y2,m1,m2,d1,d2,count;while(cin>>time1){cin>>time2;count=1;if(time1>time2) swap(time1,time2);y1=time1/10000,m1=time1%10000/100,d1=time1%100;y2=time2/10000,m2=time2%10000/100,d2=time2%100;while(y1<y2||m1<m2||d1<d2){d1++;count++;if(d1==month[m1][is_leap(y1)]+1){m1++;d1=1;}if(m1==13){y1++;m1=1;}}cout<<count<<endl;}return 0;
}
问题 B: Day of Week

#include <iostream>
using namespace std;
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
string week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
string month[12] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }
int to_day(int day,int m,int year){int count=0;for (int i = 1; i < year; ++i) {if(is_leap(i)) count+=366;else count+=365;}for (int i = 0; i <m-1 ; ++i) {count=count+days[i][is_leap(year)];}count=count+day;return count;
}int main() {int day,year,mon;string monstr;while(cin>>day>>monstr>>year){for (int i = 0; i < 12; ++i) {if(monstr==month[i]) mon=i+1;}int ans= to_day(day,mon,year)%7;cout<<week[ans]<<endl;}return 0;
}
打印日期

#include <cstdio>
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }int main() {int year,mon,day,count;while(scanf("%d %d",&year,&count)!=EOF){mon=1;day=0;while(count--){day++;if(day==days[mon-1][is_leap(year)]+1) {mon++;day=1;}}printf("%04d-%02d-%02d\n",year,mon,day);}return 0;
}
日期类

#include <cstdio>
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }
int main() {int m,year,mon,day;scanf("%d",&m);for (int i = 0; i < m; ++i) {scanf("%d %d %d",&year,&mon,&day);day++;if(day==days[mon-1]+1){mon++;day=1;}if(mon==13){year++;mon=1;}printf("%04d-%02d-%02d\n",year,mon,day);}return 0;
}
日期累加

#include <cstdio>
int days[12][2]={{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
bool is_leap(int year){ return (year%4==0&&year%100!=0||year%400==0); }int main() {int m,year,mon,day,count;scanf("%d",&m);for (int i = 0; i < m; ++i) {scanf("%d %d %d %d",&year,&mon,&day,&count);while(count--){day++;if(day==days[mon-1][is_leap(year)]+1) {mon++;day=1;}if(mon==13){year++;mon=1;}}printf("%04d-%02d-%02d\n",year,mon,day);}return 0;
}