小w的a b問題

2021-09-24 19:38:48 字數 1170 閱讀 9391

大家一定都做過各大oj上面不同版本的a+b problem,如果現在反過來給你c,請你給我輸出一組a和b,使得a+b的和等於c呢?

這同樣還是乙個簡單的問題。

我們假設某種語言中的32位整形被定義成int 型別,該語言中負整數以二進位制補碼的形式儲存,第32位為符號位,前31位為數值位。例如-1就被儲存為"1111 1111 1111 1111 1111 1111 1111 1111",-8則被儲存為"1111 1111 1111 1111 1111 1111 1111 1000",特別的,32位整形所能表示的最大負數-2147483648則被儲存為"1000 0000 0000 0000 0000 0000 0000 0000"。

計算機在做加法運算時,實際上執行的是補碼的加法運算,在計算的過程中如果數字溢位到不存在的第33位,那麼這個溢位的位就不要了。

現在給你乙個32位的負整形c。即c∈[−2147483648,−1]c∈[−2147483648,−1]。

請你給我兩個32位的正整形a,b即a,b∈[1,2147483647]a,b∈[1,2147483647]。使得a+b=c。

如果不存在這樣的a和b的話,請輸出乙個字串"no solution"。否則請輸出任意兩個正整形a,b滿足a+b=c。兩個整數之間用乙個空格隔開。

僅一行乙個32位負整形c,(−2147483648⩽c⩽−1)(−2147483648⩽c⩽−1)
如果存在兩個32位正整形a,b使得a+b=c成立,則輸出這兩個正整形。

反之請輸出乙個字串"no solution"。(不含引號)

示例1

複製

-182
複製

2147483647 2147483467
a=2147483647="0111 1111 1111 1111 1111 1111 1111 1111"

b=2147483467="0111 1111 1111 1111 1111 1111 0100 1011"

c=-182="1111 1111 1111 1111 1111 1111 0100 1010"

a+b=c

#includeint c,a,b;

int main()

b=c-a;

printf("%d %d\n",a,b);

return 0;

}

小w的a b問題

可以利用雜湊對映,但是可以要選擇合適的模數,一開始選擇的是 1e9 7 不行,換成 1e9 9 才可以,或者 2147483587 include using namespace std typedef long long ll const int n 1e5 10 const int mod 1e...

小w的a b問題(高效能優化 減少誤差

題目描述 給你兩個陣列,乙個aa陣列,長度為n,另乙個是bb陣列,長度為m。現在問你 ni 1a i i 1na i 是否等於 mi 1b i i 1mb i 其中 是連乘符,它表示n個元素的乘積。為階乘運算,表示小於等於該數所有正整數的積,並且規定0 1。我們認為階乘運算 的優先順序大於連乘運算 ...

演算法小練 A B 問題

title 演算法小練 a b 問題 categories 給出兩個整數 aa 和 bb 求他們的和。你不需要從輸入流讀入資料,只需要根據aplusb的兩個引數a和b,計算他們的和並返回就行。您在真實的面試中是否遇到過這個題?是 題目糾錯 a和b都是32位整數麼?我可以使用位運算子麼?樣例 1 輸入...