---
tags: homework, 109, cpi
title: '[109-cpi] HW3'
---
# Homework 3
> Week 4 (10/5), Due: 10/12 09:00:00\
> ps. 這次來換一下出題順序
* 範圍:Conditional
* NOJ
---
## 會長的工作
> [name=映達]
### Description
學生會的會長除了是個資優生,在課業以外的地方更是一個名符其實的工作狂。會長嘗試在各式各樣的地方打工,不論是夏日祭典的炒麵攤,或是海水浴場的海之家。不過其中最特殊的,非賭場莫屬了。在賭場工作不但報酬可觀,同時還能和黑白兩道、政商名流有所接觸。賺錢的同時又能拓展人脈,是個難能可貴的經驗。
在賭場工作了一段時間,會長漸漸的對「 Blackjack 」的玩法有一套心得。會長將觀察的結果畫成了表格,代表的是玩家在各種情況下應該做出的最佳策略。
要請你寫一支程式來模仿查表的行為。為了方便起見,假設判斷的皆是玩家的「第三張牌」拿或不拿。換句話說,目前場上的牌有:莊家一張、玩家兩張。

縱軸數字代表的是莊家的點數。橫軸數字三張圖(左至右)意義稍有不同:
- 第一張圖最單純,數字代表的是兩張牌的點數總和。
- 第二張圖代表的是,一張 A 配上另一張其他點數的牌。
- 第三張圖則是當兩張牌點數相同的情況。
(在 Blackjack 的規則中,J、Q、K 皆視為 **10 點**。 A 在情況允許(點數和尚未超過 21 點)時,也視作 10 點。)
### Input
依照實際發牌的順序,**玩家、莊家、玩家**,依序輸入三個整數,用空白隔開。代表撲克牌 $n$。
- $1 \le n \le 13$
### Output
根據上表輸出最佳的操作( `ht`, `st`, `dd`, `sp` )。
補充)表中縮寫代表的意義分別是:
- ht: Hit
- st: Stand
- dd: Double Down
- sp: Split
### Example Input
```
10 8 7
```
### Example Output
```
st
```
### Hint
- de Mesentier Silva F, Isaksen A, Togelius J, Nealen A (2016)
Generating heuristics for novice players. In: Proceedings of the 2016 IEEE Conference on Computational Intelligence and Games (CIG). IEEE, pp 1–8
### Subtask
---
## 「危機」分的惡趣味
> [name=育辰]
### Description
芮芮興高采烈考進了NU大學,所屬科系隸屬於理學院,修習了很多硬課,其中包括了「程式設計(一)」,此外,還有...許多學長姐被當掉的曾經...那些痛苦的血淚以及辛酸史——「微積分乙(一)」。\
\
「微積分乙(一)芮芮興高采烈考進了NU大學,所屬科系隸屬於理學院,修習了很多硬課,其中包括了「程式設計(一)」,此外,還有...許多學長姐被當掉的曾經...那些痛苦的血淚以及辛酸史——「微積分乙(一)」。\
\
\
為了實現翻轉教學,阿修架設了線上的遊戲平台,給學生作為回家作業...
**(參考圖)**\

\
阿修小時候玩了一款爬梯大富翁,起初時玩家輪流擲骰,若移動到「特定」格子,則可爬梯到「特定」格子,除了...有機會讓你一瞬間「獨佔鰲頭」,也可以一瞬間勝利「灰飛煙滅」...\
\
今天阿修規定了這樣一款遊戲:
1. 起初玩家由數字 $0$ 的位置出發,並由系統隨機給定一個**正整數** $x$,接著玩家根據下列式子計算出結果 $n$,此結果即為該玩家「本次移動的步數」,當然...阿修的修課同學都是學霸,絕不會算錯!
$$n =\begin{cases}
\frac{5 \times (x-2)}{x-2}, & 0 < x < 4\\
\frac{x}{2}, & x \geq 4 \text{ and } x \text{ is even.}\\
x-4, & x \geq 4 \text{ and } x \text{ is odd.}\\
\end{cases}$$
> 阿修覺得擲骰太無趣了,於是出了本次作業的範圍**分段函式**讓同學計算移動步數。
2. 阿修的爬梯大富翁,若玩家計算出 $n$ 後,並且移動完畢,此時玩家位於位置 $P$,若數值滿足**下列式子**,則該位置 $P$有設置「升天梯子」,將移動到 $(2 \times P)$ 的位置上: $$A = \frac{(P-4)(P-3)}{3}, \text{and A is positive integer}$$
3. 「地獄梯子」則會讓玩家移動到 $\frac{P}{2}$ 的格子上 (若為小數,則無條件捨去到整數位),此梯子坐落在**所有 $5$ 的倍數**的格子上
**注意**
1. 若該格子同時有「升天梯子」以及「地獄梯子」則玩家芮芮會陷入「兔子疑惑」,因此**不移動**。
2. 計算 $n$ 數值時的分段函式,若為 **無定義** 但其極限存在,則玩家必須輸出 "**Not defined! Limit exist!**",阿修為了獎勵正確答題的同學,該玩家移動步數改為 $n = (3 \times x) + 1$
3. 若僅有一種梯子,則玩家「必定」須攀爬該梯子。
芮芮是阿修微積分課的修課學生,他雖然是學霸但不太會寫程式。\
\
奇妙的是阿修可能程式太強了,沒意識到這堂課的同學未必學過程式...他架設微積分課程的線上學習平台,卻是採用 Online Judge 的繳交方式,必須上繳程式碼並得到 Accepted,才算拿到本次作業分數!\
\
請寫出一個程式,幫幫芮芮完成作業吧!
### Input
輸入一行,只包含一**正整數** $x$
> 該輸入,**保證**計算後: $$0 \leq P \leq 2^{31}-1$$
### Output
若 $n$ 計算結果未定義,則先輸出 "**Not defined! Limit exist!**",並換行,接著,無論 $n$ 起初是否定義,皆輸出一行整數 $P$,為玩家最終所在位置,並需換行。
> 未定義(即 $x=2$) 輸出指定字串後,阿修會獎勵同學將移動步數 $n$ 改為 $(3 \times x) + 1$,所以最終 $n$ 不會有未定義的情況發生。
### Example Input \#1
2
### Example Output \#1
Not defined! Limit exist!
14
### Example Input \#2
4
### Example Output \#2
2
### Hint
* 看清楚題目,尤其是 **注意** 的事項
* 善用判斷式,起初玩家是在位置 **0** 上,計算 $n$ 完移動後,**該位置**還要再判斷是否有梯子,並根據上述狀況得出最終所在位置 $P$
* 範例測資 1:
* 起初 $x=2$,代入到式子得到: $$\frac{5 \times (2-2)}{2-2} = \frac{0}{0}$$得到未定義的答案,但 $\lim_{x \to 2}(\frac{5 \times (x-2)}{x-2}) = 5$,根據題幹,先輸出一行 "Not defined! Limit exist!"
* 根據題目,由於未定義,因此移動步數改為 $(3 \times x) + 1 = 7$,因此玩家移動到位置 $7$ 上
* 由於 $\frac{(P-4)(P-3)}{3} = \frac{3 \times 4}{3} = 4$,4為正整數,因此我們得知位置 $7$ 上有「升天梯子」,但 $7$ 不為 $5$ 的倍數,故無「地獄梯子」,由此,玩家必須爬上「升天梯子」移動到 $7 \times 2 = 14$ 的位置上
* 再輸出最終位置 $14$ 即可
* 範例測資 2:
* 起初 $x=4$,故代入得 $\frac{x}{2} = 2$
* 計算 $\frac{(2-4)(2-3)}{3}$ ,結果不為整數,因此無「升天梯子」
* $2$ 不為 $5$ 的倍數,故無「地獄梯子」
* 直接輸出最終位置 $2$ 即可
### Subtask
#### Subtask 1:40%
該任務保證移動後格子不會有「升天梯子」,也不會有「地獄梯子」,此外,也不會有"not defined”(x=2) 的狀況出現。
#### Subtask 2: 20%
移動後格子「可能」有梯子,但不會兩種梯子同時出現。
#### Subtask 3: 40%
無特殊限制
* [測資載點](https://drive.google.com/file/d/1wOeoGwKvkEIE6RSAafU4p8wQM2jduBEo/view?usp=sharing)
---
## 決勝!撿石頭
> [name=博傑]
### Description
社團活動,那是身為高中學生,要度過一個充實的高中時光的重要途徑。而社團經費,更是維持社團可以正常運作的命脈。
最近,由於經濟不景氣,捐款有所減少,學生會的大家正在討論今年的社團經費應當如何刪減,就在會長與會計爭論究竟該不該因為社團內的情侶課徵「幸福稅」的時候,大小姐提出了「文化系社團的開銷通常不大,活動也較不認真,應當優先刪減」這種論點。
身為文化系社團 --- 桌遊部成員的書記,自然極力反抗,提出了與大小姐決鬥的請求,要用遊戲來證明桌遊部可是都有認真在做社團活動的,這個遊戲規則如下:
1. 在桌上擺了總共 $N$ 個石頭
2. 猜拳決定開始玩家,贏家先手
3. 雙方玩家輪流從中拿走 $1 \sim M$ 顆石頭
4. 拿走最後一個石頭的玩家即獲勝
然而,看似公平的規則中,其實隱藏著必勝的法則。
勝負,早已在猜拳時被決定了。
而身為出老千專家的書記,自然不會放過這種獲勝的機會。
現在,告訴你 $N$ 跟 $M$,請你幫書記決定,他到底要猜贏還是猜輸,才能保證拿下這場遊戲的勝利吧。
### Input
輸入僅一行兩個正整數,分別代表 $N, M$
其中 $N > M$
對於所有輸入,保證 $1 < N, M < 2^{31}$
### Output
請輸出一行字串
輸出 `Win` 表示書記需要猜贏才能獲得遊戲勝利
輸出 `Lose` 表示她需要猜輸才能獲得遊戲勝利
### Example Input 0
```
4 3
```
### Example Output 0
```
Lose
```
### Example Input 1
```
4 2
```
### Example Output 1
```
Win
```
### Hint
1. 對於第一筆範測,不管先手的玩家拿的是幾顆,後手一定可以把剩下的石頭拿完,所以後手必勝,因此書記必須猜輸才能贏得遊戲。
2. 第二筆範測中,先手只要拿走 1 顆石頭,後手不管拿走幾顆,最後都會是後手拿完全部的石頭,因此這個時候先手必勝。
3. 幸福稅是單身狗會計因為忌妒而提議的不合理規定,大意是社團內每有一對情侶,社費便要減少五萬元。
### Subtask
---
## 湊題目區
* 本次命題範圍
[Judge Girl](https://judgegirl.csie.org/problems/domain/0#3)
* 偏好一個簡單、一個難的,例如 power配上Square兩題
* 或同樣 Triangle vs Square (類型太相同可能會有點膩)
## Triangle
### Description
平面上座標上,給定三角形的三個頂點座標,決定是否為等腰(*isosceles*)、銳角(*acute*)、鈍角(*obtuse*)或者是直角(*right*)三角形。你可以假設所有座標皆為整數。特別注意,如果一個三角形為等腰三角形,那麼就不必回報它是否為銳角或鈍角。
為了防止計算誤差,若需要紀錄三角形的三邊長,最好使用其邊長的平方儲存,假設三邊長由長到短分別為 $a, b, c$,那麼只需要比較 $a^2, b^2, c^2$ 之間的關係即可得到。
### Input
輸入總共有一行六個整數 $x_1, y_1, x_2, y_2, x_3, y_3$,分別代表三角形三個點的座標。
所有整數皆為小於 $1000$ 的非負整數。
所有輸入皆保證可以形成合法的三角形。
### Output
輸出三角形的類別於一行,可能的輸出有
- `isosceles`
- `acute`
- `obtuse`
- `right`
### Sample Input 0
```
0 0 1 1 1 0
```
### Sample Output 0
```
isosceles
```
### Sample Input 1
```
0 0 1 3 3 0
```
### Sample Output 1
```
acute
```
### Hint
改編自 Judge Girl,[原題連結](https://judgegirl.csie.org/problem/0/80)於此
## Origin in Quadrilateral
### Description
給一個凸四邊形 $Q$ 的四個頂點座標,請問原點 $(0, 0)$ 是否在四邊形內部,如果原點在四邊形內部,輸出 `1`,反之,請輸出 `0`

範例一: 原點在 $Q$ 裡面

範例二: 原點不在 $Q$ 裡面
### Input
輸入包含八個整數 $a, b, c, d, e, f, g, h$,按照逆時針順序給定座標 $(a, b), (c, d), (e, f), (g, h)$。
請注意:四邊形的邊不一定平行於座標兩軸,座標的絕對值小於等於 $100$。
### Output
輸出 `1` 或是 `0`,代表原點是否有在 $Q$ 裡面。
### Sample Input
```
2 1 -1 2 -2 -1 -1 -3
```
### Sample Output
```
1
```
### Sample Input
```
12 1 9 2 8 -1 9 -3
```
### Sample Output
```
0
```
### Hint
題目搬運自 Judge Girl,[原題連結](https://judgegirl.csie.org/problem/0/241)在此
#### Hint 1
> In computational geometry of the plane, the cross product is used to determine the sign of the acute angle defined by three points $p_1 = (x_1, y_1)$, $p_2 = (x_2, y_2)$ and $p_3 = (x_3, y_3)$. It corresponds to the direction of the cross product of the two coplanar vectors defined by the pairs of points $p_1$, $p_2$ and $p_1$, $p_3$, i.e., by the sign of the expression $P = (x_2 − x_1)(y_3 − y_1) − (y_2 − y_1)(x_3 − x_1)$...
> [Cross product Computational geometry - wiki](https://en.wikipedia.org/wiki/Cross_product#Computational_geometry)
以第一筆範例測資為例,我們可以得到四個向量
$\vec{a} = (2, 1), \vec{b} = (−1, 2), \vec{c} = (−2, −1), \vec{d} = (−1, −3).$
原點會落在 $Q$ 若且唯若滿足下列條件
- $\vec{a} \times \vec{b} = 2 \cdot 2 − 1 \cdot (−1) = 5 > 0,$
- $\vec{b} \times \vec{c} = (-1) \cdot (-1) - 2 \cdot (-2) = 5 > 0,$
- $\vec{c} \times \vec{d} = (-2) \cdot (-3) - (-1) \cdot (-1) = 3 > 0, \text{and }$
- $\vec{d} \times \vec{a} = (-1) \cdot (1) - (-3) \cdot (2) = 5 > 0$
#### Hint 2
[Ray casting algorithm O(n) - Wiki](https://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm) / [Convex Polygon O(logn)](http://erich.realtimerendering.com/ptinpoly/)
#### Hint 3
計算面積總和 (Note: 注意 overflow)
---
## Mixed Fractions (超出範圍,之後再說)
<!--
### Description
請寫一個程式來計算兩個帶分數的加減乘除,題目會給定兩個帶分數 --- $a \frac{b}{c}$ 和 $e \frac{f}{g}$。舉個例子,當 $a=1, b=3, c=4$ 時,你會得到 $1.75$。你也可以透過一個負的 $a$ 來表示負數,所以當 $a=-1, b=3, c=4$ 時,結果會變成 $-1.75$。
為了簡化問題,我們可以假設
- $a$ 和 $e$ 永遠為非零值
- $b$ 和 $f$ 永遠為非負值
- $c$ 和 $g$ 永遠為是正數
另外,$b$ 和 $c$ 是必須被約分的。舉個例子,你不能有 $a=1, b=6, c=8$ 這種情況。另外當 $b$ 或 $f$ 為零時,$c$ 和 $g$ 一定要是 $1$。
我們會拿一個額外的數字 $d$ 當作運算子,$0, 1, 2, 3$ 分別對應到加減乘除。
現在,給你 $a, b, c, d, e, f, g$,計算最後的結果 $h \frac{i}{j}$。
### Input
輸入僅一行七個整數,以空格隔開,分別代表 $a, b, c, d, e, f, g$
#### Limits
- $-100 \le a, e \le 100$
- $a, e \ne 0$
- $0 \le b, f \le 100$
- $0 < c, g \le 100$
- $0 \le d \le 3$
### Output
輸出規則與輸入一樣,你需要將 $h, i, j$ 分別輸出於三行
### Sample Input
```
1
3
4
0
-2
3
4
```
### Sample Output
```
-1
0
1
```
### Sample Input
```
2
0
1
2
-1
1
3
```
### Sample Output
```
-2
2
3
```
### Hint
改編自 Judge Girl,[原題連結](https://judgegirl.csie.org/problem/0/202)於此
-->