版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzyws739307453/article/details/89763295
题目链接:http://nyoj.top/problem/1363
- 内存限制:256MB 时间限制:3000ms
题目描述
为什么花那么多时间、精力还是学不好学不通,如何把握各科目的重难点,期中和期末如何梳理本学期各知识点及内部联系……在孩子学习的过程中,我们该如何帮助孩子快速提高成绩呢?
打造名校进阶计划,让孩子会学习、会考试,实现名校梦想!
Dr. Kong, 作为一名从教多年的老师,跟踪了大量成绩好的学生,发现他们的学习习惯非常规律,有方法、有计划、有目标、有总结。比如:已考上**大学的李明同学,从小学开始订学习计划,达成目标。每经过N天就检查目标是否完成,写总结,并确定下一个学习目标。
已知李明在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
解题思路
题意:给你一个日期和当天是星期几,求n天后的日期并求出是星期几。
思路:直接从那一天跑个循环就行了,简单的模拟一下,这里有个技巧就是用%md来读入日期。
#include <bits/stdc++.h>
using namespace std;
int a[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int leap(int year) {
return year % 100 && !(year % 4) || !(year % 400);
}
int main() {
int t, w, n, year, month, day;
scanf("%d", &t);
while (t--) {
scanf("%4d%2d%2d%d%d", &year, &month, &day, &w, &n);
for (int i = 1; i <= n; i++) {
if (day >= a[leap(year)][month]) {
if (month >= 12) {
year++;
month = 0;
}
month++;
day = 0;
}
day++;
}
printf("%04d%02d%02d %d\n", year, month, day, (n + w - 1) % 7 + 1);
}
return 0;
}