题目描述
小明是个马大哈,经常忘了,今天是星期几,于是他会去找三金问今天是星期几。三金也忘记了,但是三金那里有个记录,为N天前是YYYY年MM月DD日星期W,问你今天的日期和星期几。
输入
第一行: 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<stdio.h>
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
int ww(int y)//判断闰年
{
if(y%400==0||(y%100!=0&&y%4==0))
return 1;
else
return 0;
}
int main()
{
int t,i,j,m,n,y,l,k,a;
cin>>t;
while(t--)
{
scanf("%d %d %d",&a,&m,&n);
m=m+n%7;
m=m%7;
y=a/10000;
a=a%10000;
l=a/100;
k=a%100;//年月日换算
n=n+k;//将这一月日期清零,加到天数里计算
int i=l;
while(n>0)//天数递减
{
l=i;
k=n;
if(i==1||i==3||i==5||i==7||i==8||i==10)
{
n=n-31;
}
else if(i==2)
{
if(ww(y))
{
n=n-29;
}
else
{
n=n-28;
}
}
else
{
n=n-30;
}
i++;
if(i==12&&n>31)//最后一月判断过后要年数加一
{
y++;
i=1;
n=n-31;
}
}
printf("%d%0.2d%0.2d %d\n",y,l,k,m);//输出符合格式
}
return 0;
}
转载自原文链接, 如需删除请联系管理员。
原文链接:今天星期几,转载请注明来源!