問題描述
已知2023年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。
輸入格式
輸入只有一行
yyyy mm dd
輸出格式
輸出只有一行 w
資料規模和約定
1599 <= yyyy <= 2999
1 <= mm <= 12
1 <= dd <= 31,且確保測試樣例中yyyy年mm月dd日是乙個合理日期
1 <= w <= 7,分別代表周一到週日
樣例輸入
2011 11 11
樣例輸出
5
#include#include#include#includeusing namespace std;
const int y=2011;
const int m=11;
const int d=11;
const int w=5;
/*** 1是閏年,2不是閏年
*/int isleapyear(int y)
/*** 2是小月30天 1是平月28或者29,3是大月31天
*/int ismonth(int m)
/*** 判斷2011.11.11之後的,返回乙個星期幾
*/int updatereturnweek(int y,int m,int d)
}else if(ism==2)
}else }}
}else
}else if(ism==2)
}else }}
}if(ty==y&&tm==m&&td==d) break;
}return tw;
}/**
* 判斷2011.11.11之前的,返回乙個星期幾
*/int downdatereturnweek(int y,int m,int d)
else
if(ism==1)
}else if(ism==2)
}else }}
}else
else
if(ism==1)
}else if(ism==2)
}else }}
}if(ty==y&&tm==m&&td==d) break;
}return tw;
}/**
* 判斷2011.11.11是之前還是之後還是在本身2011.11.11
* return 1 2011.11.11 before
* return 2 2011.11.11 now
* return 3 2011.11.11 after
*/int judgedafultdate(int y,int m,int d)
else if(ym)
else if(md)
else if(d>y>>m>>d;
int t=judgedafultdate(y,m,d);
if(t==2)
else if(t==1)
else
return 0;
}
藍橋杯 演算法提高 日期計算
這種型別的問題其實不難,就是要考慮的方面多一些。大概的解決辦法就是先把兩個年份之間的天數算出來,在精確求出該年份內的天數 起始日期定為 x年1月1日比較好算 注意要分為在起始日期之前還是之後,這得分開算。include using namespace std bool isleapyear int ...
藍橋杯 演算法提高 日期計算
問題描述 已知2011年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。輸入格式 輸入只有一行 yyyy mm dd 輸出格式 輸出只有一行 w 資料規模和約定 1599 yyyy 2999 1 mm 12 1 dd 31,且確保測試...
藍橋杯 演算法提高 日期計算
author chenmingdong 問題描述 已知2011年11月11日是星期五,問yyyy年mm月dd日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢400年閏的情況。通過電腦諮詢到2016年1月1日也是 星期五 include int judge int year int get yea...