Test Message

c561: Bert 愛搗蛋

內容

Bert 是個叛逆的學生,每次派任給他的任務都會做的亂七八糟,舉例來說,要他幫社團添購一台新電腦,卻買來一台疑似二手機的 AXXS 電腦,還付了兩萬多塊。

現在 CTF 想要找社團中最會寫程式的人擔任下一屆的教學,所以將每個人的能力值丟給 Bert ,但他也知道 Bert 非常喜歡搗蛋,會將所有能力值倒轉後再找一個最大值給 CTF ,CTF 非常聰明的先將所以值倒轉後再給 Bert ! 這樣就能得到正確的答案。

現在給你 CTF 將要給 Bert 的所有人的能力值,請你找出社團下屆教學的能力值。

數字倒轉的定義如下:

123 -> 321

147 -> 741

( 保證不會有前導 0 的問題 )


輸入

第一行共兩個數字 n ,代表電研社共有 n 個人。 (1 <= n <= 100000)

接下來一行共 n 個數字 a [ i ] ( 1 <= a [ i ] <= 10000 ) ,代表 CTF 給 Bert 第 i 個人的能力值。

5
23 73 92 32 21

輸出

輸出一個數,代表社團中最會寫程式的人的真正能力值。

37


解題思路

本題重點在數值的反轉,反轉步驟如下:

  1. 設 a = 轉換前的值, b = 轉換後的值 (預設值為 0)
  2. 將 b * 10
  3. 取 a % 10,讓 b 加上得到的值
  4. 把 a / 10,讓個位數消失,十位變個位,百位變十位…
  5. 判斷 a 是否為 0 ,是則跳出,否則回到 1

有辦法得到反轉值後,剩下的就是基本的條件判斷了。


完整程式碼

AC (12ms, 124KB)
#include <stdio.h>

int n, tmp, convert, best;

int main()
{
scanf(" %d", &n);
while (n--)
{
convert = 0;
scanf(" %d", &tmp);
while (tmp)
{
convert = convert * 10 + (tmp % 10);
tmp /= 10;
}
if (best < convert)
best = convert;
}
printf("%d\n", best);
return 0;
}