你知道用法文數數是一件困難的事嗎?法文的數字系統因為相較其他語言過於複雜,甚至因而衍伸了一系列的迷因。
今天,我們要來透過這個模擬賽來學習 $1 \sim 99$ 的法文。
影片版:
一開始,事情還很單純。首先,1 的法文是 un、2 的法文是 deux、3 的法文是 trois、4 的法文是 quatre、5 的法文是 cinq、6 的法文是 six(跟英文一樣,很酷對吧!)、7 的法文是 sept、8 的法文是 huit、9 的法文是 neuf、10 的法文是 dix。
法文的 11 到 16 和英文的 13 到 19 有點相似之處。英文的 13 到 19 是 -teen 系列,法文的 11 到 16 則是 -ze 系列。11 的法文是 onze、12 的法文是 douze、13 的法文是 treize、14 的法文是 quatorze、15 的法文是 quinze、16 的法文是 seize。
至於 17 到 19,我們則開始可以看到複合字的蹤影,因為這裡只有 3 個數,我們可以把它們列舉出來。17 的法文是 dix-sept (10-7)、18 的法文是 dix-huit (10-8)、19 的法文是 dix-neuf (10-9)。
接著是 20 到 69,我們首先介紹這些數中 10 的倍數的法文。20 的法文是 vingt、30 的法文是 trente、40 的法文是 quarante、50 的法文是 cinquante、60 的法文是 soixante。至於其他的數,大多數情況下就是把十位數部和個位數部以"-"連接起來即可,舉例來說,43 的法文是 quarante-trois (40-3)、69 的法文是 soixante-neuf (60-9)。既然剛剛說的是大多數,那就代表有特例:在這些數中,如果他除以 10 餘 1,那麼十位數部和個位數部之間還要加入一個「和(et)」,有點類似孔子說「吾十又五而志於學」的「又」。舉例來說,31 的法文是 trente-et-un、51 的法文則是 cinquante-et-un。
猜猜 70 的法文是什麼?septante?猜錯了!是 soixante-dix (60-10),想不到吧!其實,70 到 79 間的數 $x$,在翻譯時都需要解構成 60 和剩餘部份($x-60$)的複合字,型如 $60$-$(x-60)$。舉例來說,73 的法文是 soixante-treize (60-13)、79 的法文更是三重複合字 soixante-dix-neuf (60-10-9)。至於上一段所提到的「模 10 餘 1」規則至此仍然適用,所以 71 的法文是 soixante-et-onze。
更過份的來了:80 的法文是什麼?huitante?soixante-vingt (60-20)?都不對!是 quatre-vingts (4-20),因為 $4 \times 20 = 80$,創意滿分。81 到 99 的翻譯方式則類似 60 到 79 的規則,可以視為 80 和剩餘部份($x - 80$)的解構,不過這裡的 80 的 quatre-vingts 是不需要加 s 的。舉例來說,83 的法文是 quatre-vingt-trois (4-20-3) (注意這邊的 vingt 沒有加 s)、97 的法文則來到四重複合字 quatre-vingt-dix-sept (4-20-10-7)。這邊,我們要再來回頭提到「模 10 餘 1」規則,這條規則在 80 到 99 是不適用的喔!因此,81 的法文是 quatre-vingt-un (4-20-1)、91 的法文則是 quatre-vingt-onze (4-20-11)。
學會了嗎?我們來寫個程式檢驗你的學習成果吧!讀入一個 $1$ 到 $99$ 的整數,請輸出它的法文翻譯。
每份測試檔案的第一行(也是唯一一行)會包含恰一個整數$N$,代表需要翻譯的正整數。
輸出一個字串 $S$,代表正整數 $N$ 的法文翻譯。
IOICamp 2023 Day3 pI
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~1 | 範例測資 | 0 |
2 | 0~100 | 無特別限制 | 100 |