各位有聽過「本機打表」嗎?本機打表是一個不常被提及但有時候會出現在一場比賽中的技巧。在有些題目當中,實際上沒有好作法而且題目的輸入太單純,或者是程式運行當中需要用到的參數難以計算,在程式碼長度允許的狀況下,有一種方法就是在本機先做出結果,接著硬寫在程式裡面,最後上傳通過題目。
讓我們來看一個例子:給定兩個整數 $a, b\ (0 \leq a \leq b \leq 20)$,對於其中的所有整數,判斷這個數字是不是完全平方數。
判斷一個數字是否是完全平方數相當簡單,而且題目的範圍相當小,因此我們可以把所有平方根放在一個表格當中,並且直接查表計算就能的到答案。
範例實作如下:
#include <cstdio>
#include <cmath>
double s[21] = {
sqrt(0),
sqrt(1),
sqrt(2),
sqrt(3),
sqrt(4),
sqrt(5),
sqrt(6),
sqrt(7),
sqrt(8),
sqrt(9),
sqrt(10),
sqrt(11),
sqrt(12),
sqrt(13),
sqrt(14),
sqrt(15),
sqrt(16),
sqrt(17),
sqrt(18),
sqrt(19),
sqrt(20)
};
signed main() {
int a, b;
scanf("%d%d", &a, &b);
for (int i = a; i <= b; i++)
puts(i - 0.001 <= s[i] * s[i] && s[i] * s[i] <= i + 0.001 ? "Yes" : "No");
}
把這份程式上傳……,噢不,並沒有獲得 AC,你能在 edit distance 2 中修正這個程式嗎?
輸入只有一行,包含兩個以空白分開的整數 $a,b$。
輸出 $b - a + 1$ 行,第 $i$ 行表示 $a + i - 1$ 是否為完全平方數,是則輸出 Yes
,否則輸出 No
。
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 範例測資。 | 0 |
2 | 0~6 | 無特別限制。 | 150 |