为什么花那么多时间、精力还是学不好学不通,如何把握各科目的重难点,期中和期末如何梳理本学期各知识点及内部联系……在孩子学习的过程中,我们该如何帮助孩子快速提高成绩呢?
打造名校进阶计划,让孩子会学习、会考试,实现名校梦想!
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
思路
- 计算总天数,一年一年的减去
比赛的时候一直WA,回来根据数据调了一下,原来是个小细节错了,当剩下的天数刚好是一年就不能减了,直接是这一年的最后一天 12月31日 减过之后就成了year+1,day = 0 - 暴力模拟 一天一天加
来自队友的AC提示(大佬就是大佬,都没想到用暴力模拟)
A.in
6
20000101 6 3855
20040214 6 3974
20070701 7 243
20180527 7 66
20180527 7 900
20070703 2 5295
A.out
20100722 4
20150101 4
20080229 5
20180801 3
20201112 4
20211231 5
AC
#include<bits/stdc++.h>
#define N 100005
using namespace std;
int sum_year;
int Mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
void judge(int year) {
if (year % 400 == 0 || (year % 100 && year % 4 == 0)) {
sum_year = 366;
Mon[2] = 29;
}else {
sum_year = 365;
Mon[2] = 28;
}
}
int main () {
// freopen("in.txt", "r", stdin);
int t;
cin >> t;
while (t--) {
int num, w, n;
cin >> num >> w >> n;
int year, mon, day;
day = num % 100;
num /= 100;
mon = num % 100;
num /= 100;
year = num;
judge(year);
int sum_day = day + n;
for (int i = 1; i < mon; i++) {
sum_day += Mon[i];
}
// 比赛的时候写成 sum_day >= sum_year
// 数据刚好卡了这个点
// in 20070703 2 5295
// out 20211231 5
// error_out 20220100 5
while (sum_day > sum_year) {
sum_day -= sum_year;
year++;
judge(year);
}
mon = 1;
for (int i = 1; i <= 12; i++) {
if (sum_day > Mon[i]) {
sum_day -= Mon[i];
mon++;
}else {
break;
}
}
day = sum_day;
w = (n + w) % 7;
if (w == 0) w = 7;
cout <<year;
if (mon <= 9) cout << 0 << mon;
else cout << mon;
if (day <= 9) cout << 0 << day;
else cout << day;
cout << " " << w << endl;
}
return 0;
}
AC
#include<bits/stdc++.h>
#define N 100005
using namespace std;
int sum_year;
int Mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
void judge(int year) {
if (year % 400 == 0 || (year % 100 && year % 4 == 0)) {
Mon[2] = 29;
}else {
Mon[2] = 28;
}
}
int main () {
//freopen("in.txt", "r", stdin);
int t;
cin >> t;
while (t--) {
int num, w, n;
cin >> num >> w >> n;
int year, mon, day;
day = num % 100;
num /= 100;
mon = num % 100;
num /= 100;
year = num;
judge(year);
w = (w + n) % 7;
if (!w) w = 7;
while (n--) {
day++;
if (day > Mon[mon]) {
day = 1;
mon++;
if (mon > 12) {
year++;
judge(year);
mon = 1;
}
}
}
cout <<year;
if (mon <= 9) cout << 0 << mon;
else cout << mon;
if (day <= 9) cout << 0 << day;
else cout << day;
cout << " " << w << endl;
}
return 0;
}