(第一次周賽)第幾天? HDU 2005

2021-09-02 22:40:16 字數 2087 閱讀 4160

給定乙個日期,輸出這個日期是該年的第幾天。

time limit

memory limit

ossource

1000 ms

32768 kb

windows

c語言程式設計練習(一)

輸入資料有多組,每組佔一行,資料格式為yyyy/mm/dd組成,具體參見sample input ,另外,可以向你確保所有的輸入資料是合法的。

對於每組輸入資料,輸出一行,表示該日期是該年的第幾天。

input

output

1985/1/20

202006/3/12

71給定乙個日期,輸出這個日期是該年的第幾天。

計算這一天是這一年的第幾天,可以理解為到那一天為止,經歷了多少天,也就是把前面的月份天數加起來,加上天數,如果是一月那麼,天數即為日期數。

要注意到問題之中特殊的地方,比如閏年會在2月多一天

先貼ac**上來吧

#include

using

namespace std;

intmain()

;char m,n;

while

(cin >> year >> m >> month >> n >> day)

else

for(

int i =

0; i < month; i++

) cout << count_day

=29;}

return0;

}

定義變數、陣列

int year;

int month;

int day;

int count_day;

//用於儲存日期累加值

int month_day[13]

=;char m,n;

//用於輸入給定標準格式中的"/"

之所以將月份陣列中的month_day[0]=0,是因為如果輸入的月份是一月,那麼輸出的天數就是日期本身

之所以將二月一上來就定義為29天是因為,我覺得判斷乙個年份是閏年,比判斷乙個年不是閏年稍微簡單一點。其實只要整體的邏輯在,ac是沒有問題的

下面就是對年份是否是閏年進行乙個判斷了

if

((year %4==

0&& year %

100!=0)

||(year %

400==0)

)else

(其實還是還是覺得用乙個變數去儲存(a+b)的值好一點,不然在書寫上有點麻煩)

接下來就是要輸出結果了

for

(int i =

0; i < month; i++

) cout << count_day

最後一行的**是我周賽沒有ac的原因

month_day[2]

=29;

這段**是為了讓month_day[2](即二月份的天數)的值在運算之後依然會保持原有的month_day[2]=29,這樣在計算完一次閏年的之後大於二月的天數時就會出現錯誤

【賽後的想法】

當時一直沒能除錯出問題來,比較特殊的應該是,計算完乙個閏年的第幾天之後,再計算非閏年三月以後的天數時,就會出現錯誤,但是一直沒能進行這樣的測試,就是一直以為自己是對的

其實可以用兩組陣列代表閏年的和非閏年的,這樣可能會清楚一點明了一點。

記錄第一次leetcode周賽

第二題 確定兩個字串是否接近 class solution word1中有word2中沒有的詞 或 word1中沒有word2有的詞 for int i 0 i 26 i 排序 arrays.sort w1 arrays.sort w2 排序後不同 直接錯 即字元頻率序列必相同 for int i ...

第一次省賽

第一次出去打比賽,懷著又緊張又激動的情緒到了濟南。熱身賽因為新生不熟悉pc 2被分到了大佬組,見識到了大佬的實力,可能原來只是知道學長學姐很強,但始終沒切身體會過,而這次就近距離地感受到了大佬的實力,默默地安靜呆著,圍觀大佬解題,當然心裡也是默默想著以後我也要變成他們這樣 更強當然是更好了,哈哈哈 ...

第一次組隊賽

b 你有n個問題,你已經估計了第i個問題的難度為ci,現在你想使用這些問題去構造乙個問題集。比賽的問題集必須包含至少兩個問題,而且比賽的總難度必須至少為l至多為r,此外最簡單的問題和最難的問題之間的差異至少為x請您找出能夠選擇的問題集的數量。第一行有t組輸入 1 t 10接下來一行輸入n,l,r,x...