POJ 2080 (线性表)

#include <iostream>
using namespace std;
const char weak[7][10]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
int _year (int year){  //返回year年的天数
	if (year % 100 == 0)
		return year % 400 ? 365 : 366;
	return year % 4 == 0 ? 366 : 365;
}

int _month (int month,int year){ //返回year年month月的天数
	if (month == 2)
		return _year (year) == 366 ? 29 : 28;
	int d;
	switch (month){
		case 1:case 3:case 5:case 7:case 8:
		case 10:case 12:
			d = 31;break;
		default :
			d = 30;
	}
	return d;
}

int main (){
	int n;
	while (cin >> n && n!=-1){
		int year=2000,month=1,day=1,wek;
		wek = n % 7;  //判断星期几 。
		while (n){
			if (n >= _year (year)){  //累加到指定的年份
				n -= _year (year);
				++year;
			}else if (n >= _month (month,year)){ //累加到指定的月份
				n -= _month (month,year);
				++month;
			}
			else{
				day += n; //日期
				n = 0;
			}
		}
		cout << year << '-' << (month<10?"0":"")<<month<<'-'<<(day<10?"0":"") << day << ' '<<weak[wek]<<endl;
	}
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值