# DAY 07 - ZJ練習 ###### tags: `python教學` `練習` ## a799:正值國 內容:   很久很久以前,有一個國家叫做「正值國」,這個國家的人做什麼事都非常正直,做人坦蕩蕩。也因此,國家平安和樂、生活富足。   但是,這個國家有一個不成文的習俗,就是他們不喜歡負數,他們把負數視為邪惡的象徵,所以他們非常討厭看到負數。他們只要看到負數,就會直接把負號去掉,例如”-1”會變成”1”。   筱華是剛從其他國家搬來正值國的一位中學生,他每次只要在數學考卷上寫到負數,就會被其他同學和老師狠狠的痛打一頓,你可以幫幫他嗎? :::info 輸入說明 輸入只有一行,包含一個整數N。 對於配分40%的測試資料,保證N>=0。 對於配分100%的測試資料,保證-2147483647<N<2147483647。 ::: :::info 輸出說明 請輸出一個整數,代表正值國喜歡的數字 ::: :::warning 範例輸入 #1 -5 ::: :::warning 範例輸出 #1 5 ::: ## a058:MOD3 內容: 相信判斷一個數除以三的餘數是多少,對你來說應該沒有問題。那,如果一次請你判斷很多個數呢嘿嘿?給你n個數字,請你輸出3k、3k+1、3k+2的數各有幾個 :::info **輸入說明** 第一行有一個正整數n,代表接下來有幾個數字, 接著有n個介於1到50000之間的數字,請你做判斷 ::: :::info **輸出說明** 輸出三個數字(以空白隔開), 分別為n個數字中,三的倍數、三的倍數+1、三的倍數+2的數量 ::: :::warning 範例輸入 #1 5 1 2 3 4 5 ::: :::warning 範例輸出 #1 1 2 2 ::: ## a216:數數愛明明 內容: 數數是班上聰明又漂亮的女生,有一天……,她愛上了明明。 她對明明說:「我們的愛,若是錯誤,願你我沒有白白受苦。呃,不是,我們的愛就像是函數!」 明明說,「是啊,我對妳的愛是與日俱增呢!」 數數開心地說,「你的意思是,你在第 n 天對我的愛若用函數 f(n) 來描述,那麼,f(n) = n + f(n-1)。也就是說,每一天都比前一天多了一單位的愛,並且與舊的愛累積起來嗎?」 明明點了點頭,然後問,「那麼,妳呢?」 數數說,「我在第 n 天對你的愛若是 g(n),則會滿足 g(n) = f(n) + g(n-1) 關係!」 於是,明明笑了笑,摟著數數說,我一定會更加愛妳的! 註:在第一天的時候,f(1) = g(1) = 1。 :::info 輸入說明 輸入以 EOF 結束。每一筆測試資料有一個數字 n,其中 n > 0。 此外,50% 的測資 n <= 500;80% 的測資,n <= 3000;全部的測資 n <= 30000。 ::: :::danger **EOF說明** end of file 請使用 ```python= while True: try: #程式碼 except: break ``` 把程式碼包圍起來 對於EOF之詳細內容下次上課再說明 ::: :::info 輸出說明 輸出 f(n) 與 g(n)。 ::: :::warning 範例輸入 #1 1 2 3 5 8 13 ::: :::warning 範例輸出 #1 1 1 3 4 6 10 15 35 36 120 91 455 ::: ## a148:You Cannot Pass?! 內容: 你考了 n 科筆試題目,每科的滿分都是 100 分。老師說,如果平均大於 59 你就過關了。 :::info 輸入說明 輸入第一行為一個數字 n,接著有 n 個正整數。 ::: :::info 輸出說明 若你被當了,請輸出「yes」,否則輸出「no」。 ::: :::warning 範例輸入 #1 1 60 3 0 80 75 5 61 61 61 61 55 ::: :::warning 範例輸出 #1 no yes no ::: ## a053:Sagit's 計分程式 內容:sagit 是一位高中電腦老師,這學期正在教學生寫C++程式。他的評分標準是依照每一位學生在 ZeroJudge 系統上解出的題數,去計算出對應的得分。為了不讓分數落差太大,因此他並不是採取每一題固定得分的方式,而是隨著題數增加而調整每題的得分。規則如下: 1. 答對題數在 0~10 者,每題給6分。 2. 題數在 11~20 者,從第11題開始,每題給2分。(前10題還是每題給6分) 3. 題數在 21~40 者,從第21題開始,每題給1分。 4. 題數在 40 以上者,一律100分。 如此一來,只要寫10題,就可以得到60分,寫20題,就可以得到80分,不過要得到滿分100分,則是要寫到40題,所以同學們分數的差距就大大地減少了。 不過問題來了,雖然學生們因為這樣的計分公式而大大地提升了及格率,但因為 sagit 有600多位學生,一個一個去計算真的是一件很吃重的工作,所以現在想請你幫他寫個程式解決這個問題。 :::info 輸入說明 每組測資只有一個整數 N (0<=N<=100),代表學生在 ZeroJudge 系統上解出的題數。 ::: :::info 輸出說明 印出該位同學的得分。 ::: :::warning 範例輸入 #1 10 範例輸入 #2 40 ::: :::warning 範例輸出 #1 60 範例輸出 #2 100 ::: ## b558:求數列第 n 項 內容: 有一個數列,第一項的值為 1,第二項的值為第一項加 1,第三項的值為第二項加 2,第四項的值為第三項加 3 ... 第 k 項的值為第 k-1 項的值加上 k-1。 給一個數字 n,請印出這個數列的第 n 項。 :::info 輸入說明 本題為重複輸入,有多筆測資。 每筆輸入有一個數字 n,1<=n<=500。 ::: :::info 輸出說明 印出數列的第 n 項。 ::: :::warning 範例輸入 #1 1 4 ::: :::warning 範例輸出 #1 1 7 ::: :::spoiler 解 ```python= #x[k] = x[k-1] + k-1 b = [1] #第0項 for i in range(500): #0~499,但第0項已經寫好了,所以要把後面的常數改成+1 b.append(b[i]+i+1) while True: try: x = int( input() ) print(b[x-1]) except: #EOF break ``` :::