東東在玩遊戲「game23」。
在一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸出將n轉換成m的操作次數,如果轉換不了輸出-1。
輸入的唯一一行包括兩個整數n和m(1<=n<=m<=5*10^8).
輸出從n轉換到m的操作次數,否則輸出-1.
120 51840
7
根據題意,數字n和m應滿足:m=n*2p*3q
,即m/n=2p*3^q。
顯然,m應能夠整除n。若不能整除,則輸出-1並返回;若能,則m/=n。
接著,在m能整除2的情況下不斷除以2。不能整除2後,在m能整除3的情況下不斷除以3。若最終m為1,輸出運算次數;否則,輸出-1並返回。
#include
using
namespace std;
intmain()
m/=n;while
(m%2==0
)while
(m%3==0
)if(m==1)
printf
("%d"
,ans)
;else
printf
("-1");
return0;
}
題目鏈結 程式設計思維與實踐 Week10 作業
給定兩個數n nn和m mm,輸出n nn經過若干次乘2或乘3後轉換為m mm的次數 首先判斷m是否能被n整除,如果能夠整除,將m除以n,之後進行迴圈,每次對m除以2或者除以3,直到m 1為止,若某次迴圈m沒有除以2或3,即次數沒有改變,說明無法轉換。include using namespace ...
程式設計思維與實踐 Week10 作業
b lis lcs c 拿數問題 ii 東東在玩遊戲 game23 在一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸出將n轉換成m的操作次數,如果轉換不了輸出 1。輸入的唯一一行包括兩個整數n和m 1 n m 5 10 8 輸出從n轉...
SDU程式設計思維Week10 作業 A 簽到題
一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸入的唯一一行包括兩個整數n和m 1 n m 5 10 8 輸出將n轉換成m的操作次數,如果轉換不了輸出 1。input 1 12051840 output 1 7input 2 4242 ...