浙江工商大学20机试(oj复试)大仙来了abc

大仙来了

题目描述
小明很羡慕那些算命的江湖骗子,因为他们可以看你一眼就知道你的前世今生。当然,我们知道那些骗子都是察言观色的胡诌。但我们可以帮助小明写一个程序,算出一个人的生日是星期几,这样小明就可以拿他去忽悠不谙世事的小女生了。
输入格式
输入多组测试数据,每组数据一行,包括三个整数:年(1个空格)月(1个空格)日。输入0(1个空格)0(1个空格)0表示结束。
输出格式
请输出星期几的英文。什么?你不会英文,果然江湖骗子都是土鳖!那就用1,2,3,4,5,6,7表示总可以了吧??!!
样例输入

2013 12 18
2010 2 1
1999 7 24
2008 1 13
0 0 0

样例输出

3
1
6
7

提示/说明
1965年1月1日为周五

思路:
考察基本功,模拟即可。

#include<bits/stdc++.h>
using namespace std;

int run[15]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int ping[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool isRun(int year){
	if(year%400==0||(year%4==0&&year%100!=0)){
		return true;
	}
	return false;
}

main(){
	int yy,mm,dd;
	while(cin>>yy>>mm>>dd){
		if(yy==0&&mm==0&&dd==0){
			break;
		}
		int cnt=0;
		for(int i=1965;i<yy;i++){
			if(isRun(i)){
				cnt+=366;
			}else{
				cnt+=365;	
			}
		}
		for(int i=1;i<mm;i++){
			if(isRun(yy)){
				cnt+=run[i];
			}else{
				cnt+=ping[i];
			}
		}
		cnt+=dd;
		int ans=(5+cnt-1)%7;
		if(ans==0){
			ans=7;
		}
		cout<<ans<<endl;
	}
} 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值