【河南省第十一届ACM程序设计大赛-A】计划日
已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗?
输入
第一行: T 表示以下有T组测试数据 ( 1≤ T ≤8 )
对每组数据, 占一行:
YYYYMMDD W N (20000101≤YYYYMMDD≤20180527 1≤W≤ 7 1 ≤N≤ 8000 )
输出
对每组测试数据,输出占一行,格式为:YYYYMMDD W ( 中间一个空格 )
样例输入
2
20180527 7 1
20180214 3 289
样例输出
20180528 1
20181130 5
直接暴力,很省事。。。
#include <bits/stdc++.h> using namespace std; int a[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool run(int y) { if((y%4 == 0 && y%100 != 0) || y%400 == 0) return 1; return 0; } int main() { int t, n; cin>>t; while(t--) { int y, m, d, xq; scanf("%4d%2d%2d", &y, &m, &d); scanf("%d%d", &xq, &n); xq = (xq+n)%7; if(xq == 0) xq += 7; while(n) { if(run(y)) a[2] = 29; else a[2] = 28; while(a[m]>d && n) { d++; n--; } if(n) { m++; d = 0; } if(m == 13) { y += 1; m = 1; continue; } } printf("%d%02d%02d %d\n", y, m, d, xq); } return 0; }