最少乘法次數

2022-07-29 04:18:09 字數 1161 閱讀 6654

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述給你乙個非零整數,讓你求這個數的n次方,每次相乘的結果可以在後面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;

輸入第一行m表示有m(1<=m<=100)組測試資料;

每一組測試資料有一整數n(0輸出

輸出每組測試資料所需次數s;

樣例輸入

323

4

樣例輸出

122

通過列舉一些資料可以看出,對於2 4 8 這些2的冪,需要log2 n 次乘法,那麼通過這個私信,每次在n中減去最大的2的冪次,就是最少的次數,

注意第一次求小於等於n的二的最大冪次的計算次數要計入,後面用小於這個數的2的冪就不用在計算了(可以使用之前計算結果)。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;typedef unsigned

long

long

ull;

#define maxn 22

#define lll 1000000000

#define inf 1000000009

#define eps 0.00000001

/*給你乙個整數,求最少乘法多少次獲得這個整數的n次方

*/int

main()

if (!f)

else

ans += 1

; }

printf(

"%d\n

", ans);

}return0;

}

最少乘法次數擴充套件

給你乙個非零整數,運算規則如下 經過一次計算後可將得到的次冪任意相乘.舉例如下 1.假設底數為2,則未計算前2的冪次只有1.初始化 2.2 2 4.經過一次計算後,2的冪次共有1 2.這稱為第一次運算 3.經過2 2 4 2 4 8 4 4 16 經過第二次計算後,2的冪次共有1 2 3 4.這稱為...

NYOJ 最少乘法次數

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述給你乙個非零整數,讓你求這個數的n次方,每次相乘的結果可以在後面使用,求至少需要多少次乘。如24 2 2 22 第一次乘 22 22 24 第二次乘 所以最少共2次 輸入第一行m表示有m 1 m 100 組測試資料 每一組測試資料...

最少乘法次數 數論

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 給你乙個非零整數,讓你求這個數的n次方,每次相乘的結果可以在後面使用,求至少需要多少次乘。如24 2 2 22 第一次乘 22 22 24 第二次乘 所以最少共2次 輸入 第一行m表示有m 1 m 100 組測試資料 每一組測試...