所以現在所謂的校隊選拔第二部份就開始了。也許你剛才輕鬆地把所有筆試題電爆了,又或者你被筆試題梗爆了一題都沒做出來之類的(?)。
但是沒關係嘛,反正筆試才占30%而已。會寫程式還是比較重要。
廢話不多說,直接進入正題。
也許你考前曾經猜測這考試到底會出現甚麼樣的題目。你現在所看到的就是第一題,也就是這一題的題目:給你兩個正整數A和B,求哪一個數比較大。
不知道你現在感想如何?作為出題者,我必須如此說:當然,既然參加了這個選拔,我們相信你的實力。但為了暖身,我們也準備了很簡單的題目。
最後提醒,不管是這一題,還是等一下做的所有題目,都記得要看清楚題目噢。
因為這是初試,我們在下方列出了很多你在比賽過程中可能需要的資訊,也預祝 比賽順利。
C / C++ 常用型別列表
注意:除非特別註明,以下資訊皆以TIOJ為準,每臺電腦的數據可能會不一樣,請謹慎使用。
型別名稱 | 占用空間 (byte) |
數字範圍 (十進位/以二為底) |
printf代號 | scanf代號 |
char(字元) | 1 | -127 ~ 128(ASCII值) | %c | %c |
unsigned char(字元) | 0 ~ 255(ASCII值) | |||
int8_t (註1) char(數字) |
1 | -127 ~ 128 $[-2^ 7 , 2^ 7-1]$ |
%hhd | %hhd |
short int16_t (註1) |
2 | -32,768 ~ 32,767 $[-2^ {15} , 2^ {15}-1]$ |
%hd | %hd |
int int32_t (註1) |
4 | -2,147,483,648 ~ 2,147,483,647 $[-2^ {31} , 2^ {31}-1]$ |
%d | %d |
ptrdiff_t (註2) | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807(大約是9.2×1018) $[-2^ {63} , 2^ {63}-1]$ |
%td | %td |
long (註3) | %ld | %ld | ||
long long int64_t (註1) |
%lld | %lld | ||
uint8_t (註1) unsigned char(數字) |
1 | 0 ~ 255 $[0 , 2^ 8-1]$ |
%hhu | %hhu |
unsigned short uint16_t (註1) |
2 | 0 ~ 65,535 $[0 , 2^ {16}-1]$ |
%hu | %hu |
unsigned int uint32_t (註1) |
4 | 0 ~ 4,294,967,295 $[0 , 2^ {32}-1]$ |
%u | %u |
size_t (註2) | 8 | 0 ~ 18,446,744,073,709,551,615 (大約是1.8×1019) $[0 , 2^ {64}-1]$ |
%zu | %zu |
unsigned long (註3) | %lu | %lu | ||
unsigned long long uint64_t (註1) |
%llu | %llu | ||
float | 4 | ±1.175×10-38 ~±3.402×1038(約略值,7位有效) $\pm [2^ {-126}, 2^ {128} - 2^ {104}]$(24位有效) |
%f %lf (註4) |
%f |
double | 8 | ±2.225×10-308 ~±1.797×10308(約略值,15位有效) $\pm [2^ {-1022}, 2^ {1024} - 2^ {971}]$(53位有效) |
%lf | |
long double | 16 | ±3.362×10-4932 ~±1.189×104932(約略值,34位有效) $\pm [2^ {-16382}, 2^ {16384} - 2^ {16271}]$(113位有效) |
%Lf (註4) | %Lf |
以上型別,在不溢位的情況下,皆可直接用=
互相轉換。(與浮點數相關的轉換可能產生誤差。)
char*(字串;字元陣列) | N/A | N/A | %s | %s |
[指標] (註5) | 8 | N/A |
註1:必須#include <stdint.h>
才能使用這些型別。這些型別的好處是範圍固定,不會像其它的型別可能因機器不同而有不同的大小與範圍。
註2:必須#include <stddef.h>
才能使用size_t
與ptrdiff_t
。size_t
是用以表達可能的物件量(如陣列大小等)的無號整數型別,而ptrdiff_t
是用以表達兩個指標相減結果的有號整數型別,在不同的機器範圍可能不同。
註3:在32位元電腦上,long
/ unsigned long
的範圍會與int
/ unsigned int
相同。
註4:若要指定精度,則以%.Xf
(直接指定)或%.*f
(以變數指定)表示。例如輸出名為num
的float
到小數點後4位,可寫為printf("%.4f", num);
或printf("%.*f", 4, num);
。
註5:指標的占用空間在32位元電腦上為4 byte。
第一行有一個正整數$T \leq 10$,代表接下來有幾組數字要比較。
接下來每兩行之中,第一行有一個正整數A,第二行有一個正整數B。
$A, B \leq 10^ {10^ 6} (= 10^ {1000000}); A \neq B$。
保證數字前面不會有多餘的0。
子任務(測資) | 額外限制 | 分數 |
1 (0~2) | $A, B\leq 2 \times 10^ 9$ | 51 |
2 (3~5) | $A, B\leq 10^ {19}$ | 36 |
3 (6~8) | 無 | 13 |
對於每一組數字,如果A>B輸出一行0,否則輸出一行1。
請仔細閱讀題目,這樣才可以拿到分數。
請發揮你的觀察力,否則87分,不能再高了。
順帶一提,會在題目中給那麼多資訊的原因當然是因為這裡是初試囉。
也許大部分的資訊可以直接找得到,但其中有些資訊是應該記起來的。
Problem set / Description by Yihda Yol
建國中學105學年度校隊選拔:初試pA
No. | Testdata Range | Score |
---|---|---|
1 | 0~2 | 51 |
2 | 3~5 | 36 |
3 | 6~8 | 13 |