1.2k1 分鐘

# 題目: UVa 615 - Is It A Tree # 題目說明 給你一串node的連結關係,求是否為一個tree INPUT: 每筆資料連續輸入兩個整數u與v,代表u連結到v 當u與v皆為0時,結束這筆資料 當u與v皆小於0時,結束程式 OUTPUT: 輸出Case x is a tree.或Case 1 is not a tree. # 解題方法 先用map建雙向的圖 對每一個點跑dfs,若一個點已經走過則忽略 從main呼叫dfs的次數為連通圖的數目 (若大於1則不是tree) dfs裡,若有cycle,則不是tree node的數量有可能為0 node可能連接到自己 #
2.2k2 分鐘

# 題目: UVa 10267 - Graphical Editor # 題目說明 你需要實做一個編輯圖像的程式 INPUT: 共有9種指令 I M N: 生成一個N * M大小的圖,所有字元預設為O(大寫O) C: 清除圖,將所有字元設為O L X Y C: 將圖的(X, Y)設為C V X Y1 Y2 C: 畫垂直線(X, Y1)至(X, Y2) H X1 X2 Y C: 畫水平線(X1, Y)至(X2, Y) K X1 Y1 X2 Y2 C: 畫矩形(X1, Y1)至(X2, Y2) F X Y C: 填滿顏色,將(X, Y)與之相鄰的同色填為C S Name: 寫入檔案名稱,並印出
1.2k1 分鐘

# 題目: UVa 389 - Basically Speaking # 題目說明 給一串數字,並告訴你它是n進位的數字,將它轉為m進位的數字,並遵守以下規則: 有7位數的輸出,超過以ERROR表示 使用數字0 - 9與字母A - F n及m的範圍為2 - 16 INPUT: 每筆資料輸入1個字串、兩個整數n及m OUTPUT: 輸出轉換過後的數字,7位數為限,並向右靠齊 # 解題方法 先將n進位的數字轉為10進位 (使用一個基底div = 1,從個位開始,每向前一位div * n) 將10進位的數字轉為m進位 最後分別處理超過7位及0位的情況 # 參考程式碼 #incl
4571 分鐘

# 題目: UVa 458 - The Decoder # 題目說明 你需要將一串亂碼解碼成正常句子 INPUT: 每筆資料輸入一串連續亂碼string OUTPUT: 輸出解碼後的句子 # 解題方法 找到規律,亂碼為正常句子+7,所以將每個字元-7後輸出即可 # 參考程式碼 #include <iostream> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string str; while
1.6k1 分鐘

# 題目: UVa 11633 - Food portion sizes # 題目說明 大學學生餐廳不希望任何學生離開餐廳時沒吃飽 所以只要學生的肚子還餓,他就能免費拿到另一份餐點 為了節省時間,學生餐廳統一了每份餐點的份量,但這會導致浪費的發生 給兩個常數a及b,你需要找到a * x + b * y的最小值 x為浪費的餐點量 y為學生領餐的次數 INPUT: 每筆資料第一行有一個整數N,代表學生的數量 下一行有兩個整數a與b 接下來有N個整數,代表每個學生吃的份量 當N = 0時結束程式 OUTPUT: 輸出a * x + b * y的最小值 如果為分數需要分開輸出 例如1
1.8k2 分鐘

# 題目: UVa 12319 - Edgetown's Traffic Jams' # 題目說明 給一張無向圖,一張有像圖 求有像圖中任兩點的距離不能大於無向圖中任兩點距離的a倍+b INPUT: 第一行輸入一個整數N,代表無向圖及有像圖的大小 重複以下步驟兩次,分別為無向圖及有像圖 接下來有N行,每行至少有2個數字 設第1個數字為u、其後任一數字為v,則u連通至v 最後有兩個數字a和b OUTPUT: 符合條件則輸出Yes,反之輸出No # 解題方法 先將g1(無向圖)、g2(有像圖)建圖 將值設為101是因為N最多100,101對於N即為無限大 讀取連通的點,將連通的
1.8k2 分鐘

# 題目: UVa 11960 - Divisor Game # 題目說明 給一個整數N,求<= N中的哪一個整數有最多因數 INPUT: 第一行輸入一個整數T,代表有幾筆資料 每筆資料輸入一個整數N OUTPUT: <= N中有最多因數的整數 # 解題方法 先做質因數分解,透過以下公式能找到每個整數的因數個數 假設 24=23⋅324 = 2^3 \cdot 324=23⋅3 其因數為 1, 2, 3, 4, 6, 8, 12, 24,共8個 則將分解後的次方加1相乘即為因數個數 (3+1)⋅(1+1)=8(3 +
1.8k2 分鐘

# 題目: UVa 11536 - Smallest Sub-Array # 題目說明 建構出按照一定規則的數字序列 找出包含所有1 - K的最短子序列 序列的規則如下: x1 = 1 x2 = 2 x3 = 3 xi = (xi-1 + xi-2 + xi-3) % M + 1 INPUT: 第一行有一個整數T,代表有幾筆資料 每筆資料有3個整數N 、 M 、 K N代表數字序列的長度 M代表xi取M的餘數 K代表目標數字 OUTPUT: 輸出最短子序列的長度 如果不存在,則輸出sequence nai # 解題方法 按照N的大小先建構數字
6551 分鐘

# 題目: UVa 11689 - Soda Surpler # 題目說明 Tim今天超級渴 求他今天最多能喝幾罐可樂? INPUT: 第一行輸入一個整數N,代表有N筆資料 每筆資料有三個整數e、f、c e代表他擁有的瓶子數 f代表他今天找到的瓶子數 c代表幾個瓶子能換一瓶可樂 OUTPUT: 輸出能兌換可樂的最大數量 # 解題方法 重複累加(e + f / c)的數量,直到e + f < c # 參考程式碼 #include <iostream> using namespace std; int main() { ios::sync_w
1.4k1 分鐘

# 題目: UVa 10415 - Eb Alto Saxophone Player # 題目說明 你喜歡薩克斯風嗎? 寫一個程式計算彈奏一段旋律,每根手指的按壓次數 INPUT: 第一行輸入一個整數T,代表有T筆資料 每筆資料輸入一個字串 OUTPUT: 輸出10個整數 (每根手指的按壓次數) # 解題方法 先利用map建立每個音需要按壓的手指 之後判斷每個音,如果一個位置被按下,則此位置+1 最後輸出總共的次數 # 參考程式碼 #include <iostream> #include <vector> #include <map> #in