本文共 1275 字,大约阅读时间需要 4 分钟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 算法提高 日期计算 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2011年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 |
c++:
1 #include2 #include 3 #include 4 using namespace std; 5 6 int a[2][13]={ { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; 7 8 bool isRun(int year){//判断是否为闰年 9 if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)10 return true;11 return false;12 }13 14 int calDay(int year){15 int index = 0;16 if(!isRun(year)) index = 1;17 int tot = 0;18 for(int i=1; i<=12; ++i)19 tot += a[index][i];20 return tot;21 }22 23 int Day(int y, int m, int d){ //计算从0年0月0日到y年m月d日的时间天数 24 int ans = 0;25 for(int i=1; i >y>>m>>d;38 int diff = Day(y, m, d) - Day(2011, 11, 11);//已知2011-11-11这一天是星期5 39 if(diff > 0) cout<<(4+diff%7)%7+1<