日期差值
cpp
复制代码
#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
cpp
复制代码
#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;
}
打印日期
cpp
复制代码
#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;
}
日期类
cpp
复制代码
#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;
}
日期累加
cpp
复制代码
#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;
}