數字模擬題 Game23 C

2021-10-05 10:08:15 字數 1502 閱讀 7261

東東在玩遊戲「game23」。

在一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸出將n轉換成m的操作次數,如果轉換不了輸出-1。

input

輸入的唯一一行包括兩個整數n和m(1<=n<=m<=5*10^8).

output

輸出從n轉換到m的操作次數,否則輸出-1.

****** input 1

120

51840

****** output 1

7
****** input 2

42

42

****** output 2

0
****** input 3

48

72

****** output 3

-

1

簡單的數學思路:

n經過若幹部×2或×3操作到m,說明m一定能夠整除n,且除數一定能夠被2或者3整除。

到這我們可以使用dfs或者遞迴寫出來。但是可能會超時,沒試。

接著思考,從n到m過程中,與×2或者×3的順序是沒有影響的;

比如 從1到24的過程;

1 > 2 > 4 > 8 > 24

1 > 3 > 6 > 12 >24

1 > 2 > 6 >12 >24

可以看出來,只與×2或者×3的次數相關,與順序無關。

那麼迭代即可求出答案;

#include

using

namespace std;

int n,m;

intmain()

int p=m/n;

//除數

while

(p%3==0

) p/=3

,ans++

;//除3

while

(p%2==0

) p/=2

,ans++

;//除2

if(p!=1)

printf

("%d"

,ans)

;return0;

}

數學題。。。。

LLLYYY的數字思維(模擬題)

lllyyy很喜歡寫暴力模擬貪心思維。某一天在機房,他突然拋給了隊友ppq一 個問題。問題如下 有乙個函式f int f int x return tmp 接著lllyyy給定乙個整數 c,要求在c範圍內找兩個整數a和b,使得a b c,且f a f b 的值最大。採用多組輸入方式。每行輸入乙個整數...

java模擬題第十題 數字黑洞

size medium 任意乙個5位數,比如 34256,把它的各位數字打亂,重新排列,可以得到乙個最大的數 65432,乙個最小的數23456。求這兩個數字的差,得 41976,把這個數字再次重複上述過程 如果不足5位,則前邊補0 如此往復,數字會落入某個迴圈圈 稱為數字黑洞 比如,剛才的數字會落...

藍橋模擬題 數字遞增的數

問題描述 乙個正整數如果任何乙個數字不大於右邊相鄰的數字,則稱為乙個數字遞增的數,例如1135是乙個數字遞增的數,而1024不是乙個數字遞增的數。給定正整數 n,請問在整數 1 至 n 中有多少個數字遞增的數?輸入格式 輸入的第一行包含乙個整數 n。輸出格式 輸出一行包含乙個整數,表示答案。樣例輸入...