CSU 1410 整數轉換

2021-07-27 03:42:47 字數 1474 閱讀 3960

我們可以通過對乙個整數 a 進行加1操作或者乘2操作使其轉換為另乙個整數 b 。

給出兩個整數 x ,  y ,計算至少需要多少步才能將 x 轉換為 y 。 .

input

輸入的第一行包含乙個整數 t  (1  ≤  t  ≤  5 00 ),表示一共有 t 組測試資料。

每組測試資料佔一行,包含兩個整數 x ,  y  (1  ≤  x  ≤  y  ≤  10 18 )。

output

對於每組測試資料,輸出至少需要多少步才能將 x 轉換為 y 。

sample input

3

1 13 10

2 11

sample output

0

34

hint

對樣例2的解釋:只需3步即可將3轉換為10: 3  ->  4  ->  5  ->  10 。

對樣例3的解釋:只需4步即可將2轉換為11: 2  ->  4  ->  5  ->  10  ->  11 。

分析:

需用最少的步數將x轉化為y,則我們需要盡可能的多使用乘法,相應地,在這種步驟之下,由y反推x則需盡可能地使用除法、不使用減法。在這個前提下我們列出必須使用減法的情況:

1.y<2*x,即x>y/2,這種情況下只能由y做y-x次減法得到x。

2.y是乙個奇數,顯然,任何數乘2不可能等於乙個奇數,因此在這種情況下需先y-1得到乙個偶數再做除法。

ac**:

#include

int main()

else

else

k+=1;

y/=2;

}} printf("%lld\n",k);

} return 0;

}

python 整數轉換

整數轉換。編寫乙個函式,確定需要改變幾個位才能將整數a轉成整數b。示例1 輸入 a 29 或者0b11101 b 15 或者0b01111 輸出 2 示例2 輸入 a 1,b 2 輸出 2一 求a b異或後1的個數 n n 1 可以講n最右邊出現的第乙個1變為0.class solution def...

ip位址和整數轉換

inet addr函式 位址轉換,把 a.b.c.d 的ip位址轉換為32位長整數 宣告 unsigned long inet addr const char far cp 引數 cp 指向ip位址字串的指標 返回值 當函式成功呼叫時返回用32位整數表示的ip位址 失敗時返回inaddr none....

大整數除法(進製轉換)

將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。多組資料,每行為乙個長度不超過30位的十進位製非負整數。注意是10進製數字的個數可能有30個,而非30bits的整數 每行輸出對應的二進位制數。985 21111261111011001 11010011 10001100110這道題...