计划日
题目描述
为什么花那么多时间、精力还是学不好学不通,如何把握各科目的重难点,期中和期末如何梳理本学期各知识点及内部联系……在孩子学习的过程中,我们该如何帮助孩子快速提高成绩呢? 打造名校进阶计划,让孩子会学习、会考试,实现名校梦想! 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
//无力吐槽,自己平台老是过不了,把代码放到其他平台,个个都A了,差点怀疑人生
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
int b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void ruinian(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
b[2]=29;
else
b[2]=28;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
char s[10];
int w,n;
scanf("%s%d%d",s,&w,&n);
int month=0,day=0,year=0;
for(int i=0;i<8;i++)
{
if(i<4)
{
year+=(s[i]-48)*pow(10,3-i);
}
else if(i<6)
{
month+=(s[i]-48)*pow(10,5-i);
}
else if(i<8)
{
day+=(s[i]-48)*pow(10,7-i);
}
}
w=(w+n)%7;
if(w==0)
w=7;
ruinian(year);
while(n!=0)
{
if(day+n>b[month])
{
if(month+1<13)
{
n-=b[month]-day;
month+=1;
day=0;
}
else
{
n-=b[month]-day;
year+=1;
ruinian(year);
month=1;
day=0;
}
}
else
{
day=day+n;
n=0;
}
}
if(month<10)
printf("%d0%d",year,month);
else
printf("%d%d",year,month);
if(day<10)
printf("0%d %d\n",day,w);
else
printf("%d %d\n",day,w);
}
return 0;
}