1. 程式人生 > >第一次周賽J題

第一次周賽J題

問題連結:https://vjudge.net/problem/HDU-2005

問題PE點:(1)輸入資料多組 (2)資料格式為YYYY/MM/DD

程式說明:定義一個結構包含年月日,用函式計算天數

AC程式碼:

#include <iostream>
using namespace std;
struct date
{
 int year,month,day;
}a;
int days(int x,int y,int z,int&o)
{
    int h=((y-1)/2);
    int i=(y/2);
    if(y==1)
    {
        o=z;
    }
    if(y==2)
    {
        o=31+z;
    }
    if(y>2&&y<8)
    {
        if(x%400==0||(x%4==0&&x%100!=0))
        {
            if(y%2!=0)
            {
                o=31*h+30*(h-1)+29+z;
            }
            else
            {
                o=31*i+30*(i-2)+29+z;
            }
        }
        else
        {
            if(y%2!=0)
            {
                o=31*h+30*(h-1)+28+z;
            }
            else
            {
                o=31*i+30*(i-2)+28+z;
            }
        }
    }
    else if(y>7)
    { 
        if(x%400==0||(x%4==0&&x%100!=0))
        {
            if(y%2!=0)
            {
                o=31*(h+1)+30*(h-2)+29+z;
            }
            else
            {
                o=31*i+30*(i-2)+29+z;
            }
        }
        else
        {
            if(y%2!=0)
            {
                o=31*(h+1)+30*(h-2)+28+z;
            }
            else
            {
                o=31*i+30*(i-2)+28+z;
            }
        }
    }
    return o;
}
int main()
{
    date *p=&a;
    int x,y,z,b;
    char h,i;
    int&o=b;
    while(cin>>(p->year)>>h>>(p->month)>>i>>(p->day))
    {
    	if(h=='/'&&i=='/')
    	{
    	    days(p->year,p->month,p->day,b);
            cout<<b<<endl;
	}
    }
}