2750 - 端午节

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

201462日端午节,也是小粽子同学的18岁生日。可以推算出小粽子同学出生于星期日,经历了6575天(出生当天也算1天)。

题目输入

输入一个日期,格式是YYYY-MM-DD。如小粽子的生日是1996-06-02

题目输出

 

<span style="font-size:14px;font-family:'Microsoft Yahei','serif';">2</span><span style="font-size:14px;font-family:宋体;">个数。第1个数表示此人从出生到</span><span style="font-size:14px;font-family:'Microsoft Yahei','serif';">2014</span><span style="font-size:14px;font-family:宋体;">年</span><span style="font-size:14px;font-family:'Microsoft Yahei','serif';">6</span><span style="font-size:14px;font-family:宋体;">月</span><span style="font-size:14px;font-family:'Microsoft Yahei','serif';">2</span><span style="font-size:14px;font-family:宋体;">日所经过的天数,第</span><span style="font-size:14px;font-family:'Microsoft Yahei','serif';">2</span><span style="font-size:14px;font-family:宋体;">个数表示这个人的出生日期是星期几。</span><span style="font-family:'Microsoft Yahei','serif';"></span> 

输入/输出样例

输入格式

1975-09-01

输出格式

14155
1

C语言解答

#include<stdio.h>
int main()
{
	int year,month,day;							//定义变量年、月、日 
	int total=153;								//定义总的天数 
	int l,m,n,q,p; 									//定义中间变量 
	scanf("%d-%d-%d",&year,&month,&day);		//输入数据
	l=2014-year;
	m=l%4;
	n=l/4;
	switch(m)
	{
		case 1:
			total+=(1461*n);
			total+=365;
			switch(month)
			{
				case 1:total-=(day);break;
				case 2:total-=(31+day);break;
				case 3:total-=(59+day);break;
				case 4:total-=(90+day);break;
				case 5:total-=(120+day);break;
				case 6:total-=(151+day);break;
				case 7:total-=(181+day);break;
				case 8:total-=(212+day);break;
				case 9:total-=(243+day);break;
				case 10:total-=(273+day);break;
				case 11:total-=(304+day);break;
				case 12:total-=(334+day);break;
			}
			break;
		case 2:
			total+=(1461*n);
			total+=731;
			switch(month)
			{
				case 1:total-=(day);break;
				case 2:total-=(31+day);break;
				case 3:total-=(60+day);break;
				case 4:total-=(91+day);break;
				case 5:total-=(121+day);break;
				case 6:total-=(152+day);break;
				case 7:total-=(182+day);break;
				case 8:total-=(213+day);break;
				case 9:total-=(244+day);break;
				case 10:total-=(274+day);break;
				case 11:total-=(305+day);break;
				case 12:total-=(335+day);break;
			}
			break;
		case 3:
			total+=(1461*n);
			total+=1096;
			switch(month)
			{
				case 1:total-=(day);break;
				case 2:total-=(31+day);break;
				case 3:total-=(59+day);break;
				case 4:total-=(90+day);break;
				case 5:total-=(120+day);break;
				case 6:total-=(151+day);break;
				case 7:total-=(181+day);break;
				case 8:total-=(212+day);break;
				case 9:total-=(243+day);break;
				case 10:total-=(273+day);break;
				case 11:total-=(304+day);break;
				case 12:total-=(334+day);break;
			}
			break;
		case 0:
			total+=(1461*n);
			switch(month)
			{
				case 1:total-=(day);break;
				case 2:total-=(31+day);break;
				case 3:total-=(59+day);break;
				case 4:total-=(90+day);break;
				case 5:total-=(120+day);break;
				case 6:total-=(151+day);break;
				case 7:total-=(181+day);break;
				case 8:total-=(212+day);break;
				case 9:total-=(243+day);break;
				case 10:total-=(273+day);break;
				case 11:total-=(304+day);break;
				case 12:total-=(334+day);break;
			}
			break;
	}
	total+=1;
	q=total%7;
	switch(q)
	{
		case 6:p=3;break;
		case 5:p=4;break;
		case 4:p=5;break;
		case 3:p=6;break;
		case 2:p=7;break;
		case 1:p=1;break;
		case 0:p=2;break;
	}
	printf("%d\n%d",total,p);
}

C++解答

#include<iostream>
using namespace std;
int main ()
{
    int y,m,d,c,s,w,n;
    char p,q;
    cin >> y >> p >> m >> q >> d;
    if (m==1) c=d;
    else if (m==2) c=31+d;
    else if (m==3) c=31+28+d;
    else if (m==4) c=31+28+31+d;
    else if (m==5) c=31+28+31+30+d;
    else if (m==6) c=31+28+31+30+31+d;
    else if (m==7) c=31+28+31+30+31+30+d;
    else if (m==8) c=31+28+31+30+31+30+31+d;
    else if (m==9) c=31+28+31+30+31+30+31+31+d;
    else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
    else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
    else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
    if (m>2)
    {
	    if (y%100==0)
		{
		    if (y%400==0) c ++;
		}
        else if (y%4==0) c ++;
	}
    s = (y - 1) * 365 + ( y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400 + c;
    n = (2014 - 1) * 365 + ( 2014 - 1) / 4 - (2014- 1) / 100 + (2014 - 1) / 400 + 154;
    cout << n-s<< endl;
    w = s % 7;
	switch (w)
    {
        case 0: cout << "7";break;
        case 1: cout << "1";break;
        case 2: cout << "2";break;
        case 3: cout << "3";break;
        case 4: cout << "4";break;
        case 5: cout << "5";break;
        case 6: cout << "6";break;
    }
    return 0;
}