o640. D - Re: A+B Problem
標籤 :
通過比率 : 3人/6人 ( 50% ) [非即時]
評分方式:
Special

最近更新 : 2024-10-29 19:11

內容
這是 A+B Problem - Revisited 的前傳,兩題的差別在於上色的粗體字
 

• 這是一個 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$ 行,格式可以參考下面的輸出範例。

範例輸入 #1


											
										
範例輸出 #1
SET C A
LS B A
LS C 1
SET D 1
XOR D C
ANS D
測資資訊:
記憶體限制: 512 MB
提示 :

為了方便說明範例輸出,我們假設一個數對 $(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

標籤:
出處:
第二屆Chi怪壓常比賽 [管理者: liaoweichen1 ... (M_SQRT) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」