3372 - IP_2026_YOU_MID Scoreboard

Time

2026/10/27 15:25:00 2026/10/27 18:30:00

Clarification

# Problem Asker Description Reply Replier Reply Time For all team

# Problem Pass Rate (passed user / total user)
14801 launch.json
15079 C for Computer Science
15080 How to Survive in the Harem
15081 This is the REAL Tech-Art (Reloaded)
15082 Aventurine and Soulglad II

14801 - launch.json   

Description

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "cppdbg",
            "request": "launch",
            "preLaunchTask": "hwbuild",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "miDebuggerPath": "C:\\
x86_64-16.1.0-release-posix-seh-msvcrt-rt_v14-rev1\\mingw64\\bin\\gdb.exe",
            "MIMode": "gdb"
        }
    ]
}

Input

Output

Sample Input  Download

Sample Output  Download

Tags




Discuss




15079 - C for Computer Science   

Description

國立清X大學藝X學院學士班 115 學年度「計X機程式設計」課程的其中一位助教,是一名輔系資工系的大四學生。

他原本以為寫程式就是快樂地敲敲鍵盤,沒想到資工系居然逼他算數學!

二進位、log、矩陣、指數……什麼都來!

助教被逼瘋了!

於是,他決定把這股歪風帶回藝術學院,要求大家將一串二進位數字轉換成十進位整數。

已知二進位數字的每一位,從右至左分別代表 2⁰, 2¹, 2²……

將每一位的數字乘上該位置所對應的 2 的冪次方,再將所有結果相加,即可得到對應的十進位數值。

例如,二進位數字 1011 可以表示為:

1 × 2³ + 0 × 2² + 1 × 2¹ + 1 × 2⁰

= 8 + 0 + 2 + 1

= 11

因此,二進位數字 1011 轉換成十進位後為 11。

現在給定一串長度為 r 的二進位數字 s,請幫助已經被資工系逼瘋的助教,計算它所代表的十進位數值。

 

Input

輸入共兩行。

第一行包含一個正整數:

r

表示二進位數字共有幾位。

第二行包含一串長度為 r 的二進位字串:

s

其中 s 中的每一個字元皆為 0 或 1。

 

Note:

1 ≤ r ≤ 30

 

Output

輸出一行:

d

其中 d 為二進位數字 s 轉換後的十進位結果。

請務必在輸出結果後加上換行字元 \n。

 
Note:
  1. 二進位數字從最右邊開始,第 1 位代表 2⁰,第 2 位代表 2¹,依此類推。

  2. 可以將二進位數字以 char 型態存入 array,再逐位計算。

  3. char 型態的 '0' 與 '1' 是字元,可以使用 if 判斷目前的字元是否為 '1',再決定是否將該位數所代表的值加入答案。

  4. 不需要使用任何內建的進位轉換函式。

Sample Input  Download

Sample Output  Download

Tags




Discuss




15080 - How to Survive in the Harem   

Description

妳是一位後宮中的嬪妃。

今日天氣頗好,妳在御花園散步時靈光一閃:

既然宮鬥如此凶險,何不用程式算一下自己的勝率?

於是,聰明伶俐的妳命太監蒐集了後宮中其他嬪妃的資料。每位嬪妃具有以下三項資訊:

  • 代號(name):由不含空白的字串組成。

  • 階級(level):

level

階級

9

皇后

8

皇貴妃

7

貴妃

6

妃

5

嬪

4

貴人

3

常在

2

答應

1

官女子

  • 綜合宮鬥能力(ability):一個正整數,數字越大代表宮鬥能力越強。

經過縝密的分析,妳制定了一套科學化的宮鬥淘汰制度。

每位嬪妃的 宮鬥分數(score) 為:

score = level * ability

宮鬥依照以下規則進行:

  1. 每一輪淘汰 score 最小的嬪妃。

  2. 如果有多位嬪妃的 score 相同,則淘汰 level 較小的嬪妃。

  3. 如果 score 與 level 皆相同,則淘汰 輸入順序較前 的嬪妃。

  4. 宮鬥持續進行,直到後宮只剩下最後一位嬪妃。

 

為了方便妳建立宮鬥勝率計算表,妳自己的 index 固定為 0,其餘嬪妃依照輸入順序編號為 1 到 n。

妳自己的宮鬥勝率(win rate)定義為:

win rate = 妳贏過的其他嬪妃人數 / n * 100%

n 為除妳之外的所有嬪妃人數,包含最後的勝者(若最後的勝者不是妳)。

如果一位嬪妃比妳更早被淘汰,就代表妳成功贏過她。

如果妳成為最後的勝者,代表妳贏過所有其他嬪妃,因此勝率為 100.00%。

例如:

假設 n = 4,共有妳與其他 4 位嬪妃參與宮鬥。若淘汰順序為:

3 4 0 1

最後的勝者為 2。

 

妳的 index 為 0,在妳之前被淘汰的嬪妃為 index 3 與 4,因此妳成功贏過 2 位嬪妃。

index 1 比妳晚被淘汰,而 index 2 為最後的勝者,因此這兩位皆不算被妳贏過。

所以妳的勝率為:

2 / 4 * 100% = 50.00%

請根據以上規則,計算:

  1. 所有被淘汰嬪妃的 index,依照淘汰順序排列。

  2. 妳自己的宮鬥勝率。

  3. 最後成功留在後宮中的嬪妃 index。

 

限制

本題可以使用一維陣列,但不可使用二維或更高維度的陣列。

 

Input

第一行包含妳自己的代號、階級與綜合宮鬥能力:

my_name my_level my_ability

第二行包含一個整數 n,代表除妳之外共有多少位嬪妃:

n

接下來 n 行,每行包含一位其他嬪妃的代號、階級與綜合宮鬥能力:

name level ability

 

輸入資料符合以下限制:

  1. 1 ≤ n ≤ 10
  2. 1 ≤ level ≤ 9
  3. 1 ≤ ability ≤ 1000
  4. 1 ≤ length of name ≤ 20
  5. 所有 name 皆為不包含空白的字串。
  6. 妳自己的 index 為 0,其他嬪妃的 index 按照輸入順序依序為 1, 2, ..., n。

 

Output

第一行輸出所有被淘汰嬪妃的 index,依照淘汰順序排列,並以一個空格分隔。

最後的勝者不包含在淘汰順序中。

Elimination order: X1 X2 X3 ...

第二行輸出妳自己的宮鬥勝率,四捨五入至小數點後兩位:

My win rate: xx.xx%

第三行輸出最後成功留在後宮中的嬪妃 index:

Harem winner: Y

 

Note:

  1. 輸出格式必須完全相符,包含空格、大小寫、標點符號與換行字元 \n。

Sample Input  Download

Sample Output  Download

Tags




Discuss




15081 - This is the REAL Tech-Art (Reloaded)   

Description

 

國立清X大學藝X學院學士班的某位助教,最近正在修習計算機結構。

某天,他盯著滿頁的記憶體位址: 0xFFFFFFFF 看著看著,突然覺得哪裡不太對勁…… 

這不是很像色票嗎? 

一查才發現,在 32-bit 系統中,記憶體位址可以使用 8 位十六進位數表示;

而加入透明度(Alpha)的 RGBA 色碼 #RRGGBBAA,也正好可以使用 8 位十六進位數表示!

然而,助教在整理同學們交上來的網頁設計作業時發現,大家打字習慣都不太一樣——

有人喜歡大寫(如 #FFFFFFFF),有人習慣小寫(如 #ffffffff),

甚至有人會大小寫混用(如 #0232202a 或 #Ff00aB12)!

十六進位使用以下符號表示數值(英文字母不分大小寫):

 0 1 2 3 4 5 6 7 8 9 A(a) B(b) C(c) D(d) E(e) F(f) 

其中:

  • A 或 a = 10

  • B 或 b = 11

  • C 或 c = 12

  • D 或 d = 13

  • E 或 e = 14

  • F 或 f = 15

一個 RGBA 色碼可以表示為:

#RRGGBBAA 每一個色彩通道皆由 2 位十六進位數字組成。 

假設其中一個通道的兩位十六進位數字分別為 x 與 y,

則其十進位數值可以使用以下公式計算:x × 161 + y × 160

也就是:x × 16 + y

Hint: 161 = 16,  160 = 1

 

例如,給定大小寫混合的色碼: #0232202a 可以拆成:

02 32 20 2a

 R  G  B   A

 

其中小寫 a 所代表的數值同樣為 10,各通道分別計算為:

  • R = 0*16+2=2

  • G = 3*16+2=50

  • B = 2*16+0=32

  • A = 2*16+10=42

因此,此色碼所代表的 RGBA 數值為:

  • R = 2

  • G = 50

  • B = 32

  • A = 42

現在給定一組可能包含大小寫英文字母的 RGBA 十六進位色碼 s,請將其中的 R、G、B、A 四個通道分別轉換成十進位數值。

 

Input

輸入一行,包含一組 RGBA 色碼: 

s 的格式固定為: 

#RRGGBBAA 

其中:

  • 第一個字元固定為 #。

  • 後面共有 8 個十六進位字元。

  • 每個十六進位字元皆為 0 到 9、A 到 F 或 a 到 f。

  • 注意:本題輸入的英文字母可能為大寫或小寫。

Output

輸出一行,依序輸出 R、G、B、A 四個通道轉換後的十進位數值,數字之間以一個空白分隔。 

請務必在輸出結果後加上換行字元 \n。 

例如: 255 255 255 255

Note

  1. 十六進位中的 A~F 以及 a~f 分別代表十進位的 10、11、12、13、14、15。

  2. 每兩個十六進位字元代表一個色彩通道:#RRGGBBAA。

  3. 若兩位十六進位數字的數值分別為 x 與 y,則其十進位數值為:x*161+y*160。

  4. 可以將色碼以 char array 儲存,再分別讀取對應位置的字元。

  5. 若字元 c 介於 '0' 到 '9',可以使用 c - '0' 取得其數值。

  6. 若字元 c 介於 'A' 到 'F',可以使用 c - 'A' + 10 取得其數值。

  7. 若字元 c 介於 'a' 到 'f',可以使用 c - 'a' + 10 取得其數值。

  8. 不需要使用任何內建的進位轉換函式。

Sample Input  Download

Sample Output  Download

Tags




Discuss




15082 - Aventurine and Soulglad II   

Description

砂金是星際和平公司的高管,前陣子接了蘇樂達(Soulglad)汽水的廣告代言。 

有一天,他收到了公司寄來的 超 級 多 箱 蘇樂達汽水...... 

他決定把這些蘇樂達疊成一個巨大的 汽水塔!

已知一箱汽水有 m 瓶,砂金總共收到了 n 箱,因此總共有 m × n 瓶蘇樂達。 

汽水塔由上往下,第 1 層 1 瓶、第 2 層 2 瓶……

每一層都比上一層多一瓶,也就是找最大的 h,

使得:

1 + 2 + ⋯ + h ≤ m × n

 

不過,身為賭徒的砂金總是不滿足於現狀!

在疊完最高 h 層之後,他看著手邊剩下的汽水(也可能剛好剩 0 瓶),

心想:「如果要再往下多疊一層(第 h+1 層),我還需要請公司補寄幾瓶蘇樂達過來?」

例如一箱汽水有 3 瓶(m=3),砂金總共收到了 2 箱(n=2),總共有 6 瓶:

      1
    1  1
  1  1  1

 

剛好可以疊完 3 層(1+2+3=6),手邊剩下 0 瓶。

如果要再疊第 4 層(需要 4 瓶),他還差 4-0=4 瓶蘇樂達!

又例如一箱有 7 瓶(m=7),收到 2 箱(n=2),總共有 14 瓶?

假設總共有 14 瓶:

疊完 4 層用掉 10 瓶,手邊還剩 4 瓶;

如果要疊第 5 層(需要 5 瓶),就只差 5-4=1 瓶!

請幫砂金總監計算他的汽水塔最多可以疊幾層,以及若想再多疊一層還差幾瓶蘇樂達!

 

Input

 請分別輸入兩個整數,每次輸入前需換行:

m

n

 

其中:

  • m:一箱蘇樂達的瓶數

  • n:砂金收到的箱數

Note:

  • 請使用 scanf() 讀取整數輸入。

  • 所有數值皆為正整數,且 mn 不超過 int 範圍。

  • 建議使用迴圈,從第 1 層開始,一層一層扣除需要的蘇樂達瓶數。 

Output

 請依照以下格式輸出: 

Aventurine can build a h-layer Soulglad tower, and needs k more bottle(s) for the next layer! 

其中:

  • h:最多可以疊出的汽水塔層數

  • k:距離完成下一層(第 h+1 層)還缺少的蘇樂達瓶數

Note:

  • 輸出最後必須有一個換行符號(\n)。

  • 請確保輸出格式完全符合。 

Sample Input  Download

Sample Output  Download

Tags




Discuss