description
gardon的18歲生日就要到了,他當然很開心,可是他突然想到乙個問題,是不是每個人從出生開始,到達18歲生日時所經過的天數都是一樣的呢?似乎並不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達18歲生日所經過的總天數,讓他好來比較一下。
input
乙個數t,後面t行每行有乙個日期,格式是yyyy-mm-dd。如我的生日是1988-03-07。
output
t行,每行乙個數,表示此人從出生到18歲生日所經過的天數。如果這個人沒有18歲生日,就輸出-1。
sample input
1sample output 思路1988-03-07
首先看到「如果這個人沒有18歲生日」這句話,我還是有點懵的,怎麼會有人沒有18歲生日。一開始,我有想到如果是2月29日出生,規定3月1日過生日,是不是當成乙個特列去算,糾結於這點常識,讓我無從下手。
但可以這麼想,2月29日出生的為閏年,18不是4的倍數,肯定是平年,不可能會有他的生日啊。這麼講可能不太嚴謹,但過於糾結就無法進行下一步。
跳過了這一點,寫起來就得心應手了,18年,有閏年就加366,有平年就加365,但具體這麼判斷呢。
366域365的差別就在於2月的不同,那麼2月必定會成為乙個分支,舉個例子,2023年3月1日出生的那麼到2023年的3月1日經過了365天,應為只有2月不同,跳過了2月,就只有365天了。而2023年2月20日出生到2023年2月20日經過了366天。
那麼我們可以得出結論,3月以前出生的到下乙個生日的天數取決於出生年份是不是閏年,從3月開始到下乙個生日的天數取決於出生年份的下一年是不是閏年。
這道題其實並不難,但一開始沒想清楚,所以多講幾句code
#include
bool is_leap
(int x)
;//判斷是否為閏年的函式
intmain()
if(month<=2)
//分支,理由上面已經講過了
for(i=
0;i<
18;i++
)else
for(i=
1;i<=
18;i++
)printf
("%d\n"
,sum);}
}bool is_leap
(int x)
Gardon的18歲生日
問題 gardon的18歲生日就要到了,他當然很開心,可是他突然想到乙個問題,是不是每個人從出生開始,到達18歲生日時所經過的天數都是一樣的呢?似乎並不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達18歲生日所經過的總天數,讓他好來比較一下。輸入 乙個數t,後面t行每行有乙個日期,格...
18歲生日(閏年問題)
gardon的18歲生日就要到了,他當然很開心,可是他突然想到乙個問題,是不是每個人從出生開始,到達18歲生日時所經過的天數都是一樣的呢?似乎並不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達18歲生日所經過的總天數,讓他好來比較一下。乙個數t,後面t行每行有乙個日期,格式是yyyy...
18歲生日所經過的總天數
problem description gardon的18歲生日就要到了,他當然很開心,可是他突然想到乙個問題,是不是每個人從出生開始,到達18歲生日時所經過的天數都是一樣的呢?似乎並不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達18歲生日所經過的總天數,讓他好來比較一下。inpu...