倒计时

倒计时

Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)
Total Submissions: 9 Accepted Submissions: 2
Problem Description
今天是2021年5月14日,星期五,小周非常期待一个重要的时刻,倒计时牌上显示还有多少天,倒计时牌上最多只能显示3位数,请你编程帮小周计算一下重要时刻的日期和星期几。

Input
输入有多组数据,每组一行,每行只有一个整数(最多3位)。

Output
输出对应的年月日和星期几(用1~7)。

Sample Input
1
10
Sample Output
2021-05-15 6
2021-05-24 1

#include <stdio.h>
#define Y 2021
#define M 5
#define D 14
int isLeap(int year)
{
	return (year%4!=0||(year%100==0&&year%400!=0)) ? 0 : 1;
}
int main()
{
	int sum =0;
	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 week[7] = {1,2,3,4,5,6,7};
	while(~scanf("%d",&sum))
	{
		int sumDay = 0;
		int y=0,m=0,d=0;
		sumDay += (Y-1)*365;
		
		for(int i = 1;i<M;i++)
		{
			sumDay += a[0][i];
		} 
		
		for(int i = 1;i<Y;i++)
		{
			sumDay += isLeap(i);
		}
		sumDay += (d + sum-1);
		sum += 14;
		m = 5;
		y = 2021;
		while(a[isLeap(y)][m]<sum)
		{
			sum -= a[isLeap(y)][m++];
			if(m==13)
			{
				y++;
				m = 1;
			}
		}
		d = sum;
		printf("%d-%02d-%02d %d\n",y,m,d,week[sumDay%7]);
	}
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值