• 這是一個 output-only 問題。
• 題目 : 給你 $A, B$ 兩個非負整數 $(0 \leq A, B \leq 2^{60}-1)$,請你算出 $A+B$ 的值? 但是這次必須得使用下列的方式求得 :
現在有個程式語言,他的程式語法如下,你可以呼叫下列的方法進行運算,這個程式語言有 $26$ 個變數 $A, B, C,... , Z$ 可供存取,一開始給定 $A, B$,剩下的 $C, D, E,... , Z$ 皆預設為 $0$,這些變數可存取 $0\sim 2^{64}-1 $ 範圍的值 (即 C++ 的 unsigned long long int),超出範圍(overflow)會被模 $2^{64}$。請你利用這個程式語言的方式求出 $A+B$ 。
不過這個程式語言還在發展測試的階段,所以有一些問題,在根據一些觀察後,發現在最後寫出的一串指令中,會有隨機一行的效果會因為在編譯的過程中發生錯誤而被完全忽略(跳過),雖然這聽起來有點奇怪,但還是希望你能克服這個錯誤。
方法 | 用途 |
$\text{AND X Y}$ | 將目前的 $X$ 做 $and\ Y$ 運算,也就是 $X\rightarrow X\ and\ Y$ |
$\text{OR X Y}$ | 將目前的 $X$ 做 $or \ Y$ 運算 |
$\text{XOR X Y}$ | 將目前的 $X$ 做 $xor\ Y$ 運算 |
$\text{RS X Y}$ | 將目前的 $X$ 進行右移運算 $Y$ 格 |
$\text{LS X Y}$ | 將目前的 $X$ 進行左移運算 $Y$ 格 |
$\text{SET X Y}$ | 將目前變數 $X$ 的值設定為 $Y$ |
$\text{MUL X Y}$ | 將目前變數 $X$ 的值設定為 $X\times Y$ |
$\text{DIV X Y}$ | 將目前變數 $X$ 的值設定為 $\lfloor{\frac{x}{y}}\rfloor$,也就是取 $X/Y$ 的商,如果除數為0會被認定錯誤 |
$\text{ANS X}$ | 回傳答案 $X$,此指令執行完後程式中止,保證這個指令不會被忽略。 |
上述方法的 $X$ 是一個變數, $Y$ 可以是一個變數抑或著是一個非負整數 (需滿足$ 0 ≤ Y ≤ 2^{64}-1$),注意 $\text{and or xor}$ 指的是位元運算。
請你利用上面的方法計算出 $A+B$ 並利用 $\text{ANS}$ 方法回傳答案,撰寫的方法請參考範例輸出。
本題為 output-only 問題,無任何輸入。
輸出你的解法,各方法中間需換行,最多可輸出 $3\times 10^3$ 行,格式可以參考下面的輸出範例。
SET C A LS B A LS C 1 SET D 1 XOR D C ANS D
為了方便說明範例輸出,我們假設一個數對 $(A, B)$ = $(1,2)$,然後被忽略的指令為第二行: LS B A,那麼範例輸出#1將進行以下操作:
首先給予 $A \rightarrow 1, B \rightarrow 2$,接著根據輸出進行操作:
$C \rightarrow A = 1$
第二行本來的效果是將變數 B 做位元運算左移 A 格,但此操作被忽略。
$C 左移 1 格 = (1 << 1) = 2$
$D \rightarrow 1$
$D\ xor\ C = 1\ xor\ 2 = 3$
最後回傳 $D=3$ 。
注意 : 範例輸出的解法不代表能通過所有的測試資料。
在每個測資點會經過 $1$ 組 $(A, B)$ 的測試,OJ會枚舉忽略你的輸出中任一行(不包含 ANS 指令)後,運算的結果,全數通過即可在該測資得到 $\text{AC}$
Authored by r1cky
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|