1483 化學變換 暴力

2022-06-02 09:12:08 字數 1485 閱讀 4995

基準時間限制:1 秒 空間限制:131072 kb 分值: 20 難度:3級演算法題

收藏關注有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試劑的量弄成相等。

有兩種操作:

·        把第i種的量翻倍,即第i種的量變成2ai。

·        把第i種的量減半,除的時候向下取整,即把第i種的量變成 ⌊ai2⌋

。現在所有的化學試劑的量已知,問最少要變換多少次,這些化學試劑的量才會相等。

樣例解釋:把8變成4,把2變成4。這樣就需要兩次就可以了。

input

單組測試資料。

第一行有乙個整數n (1 ≤ n ≤ 10^5),表示化學物品的數量。

第二行有n個以空格分開的整數ai (1 ≤ ai ≤ 10^5),表示第i種化學試劑的量。

output

輸出乙個數字,表示最少的變化次數。
input示例

3

4 8 2

output示例

2
**:

1 #include 2 #include 3 #include 4 #include 

5 #include 6 #include 7 #include 8 #include 9 #include

10 #include 11 #include 12

using

namespace

std;

13#define for0(i, n) for(int i=0; i

14#define for1(i,a,n) for(int i=(a);i<=(n);++i)

15#define for2(i,a,n) for(int i=(a);i

16#define for3(i,a,n) for(int i=(a);i>=(n);--i)

17#define for4(i,a,n) for(int i=(a);i>(n);--i)

18#define cc(i,a) memset(i,a,sizeof(i))

19#define ll long long

20#define mod 1000000007

21#define inf 0x3f3f3f3f

22#define max 100100

2324

intdp[max];

25int

num[max];

2627

void tmp(int x,int

y)2833}

3435

intmain()

3657}58

int ans=inf;

59for(int i=0; i)

63 printf("

%d\n

",ans);

64 }

1483 化學變換 模擬,暴力)

有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試劑的量弄成相等。有兩種操作 把第i種的量翻倍,即第i種的量變成2ai。把第i種的量減半,除的時候向下取整,即把第i種的量變成 ai 2 現在所有的化學試劑的量已知...

51Nod 1483 化學變換(思維 暴力)

思維題 找出每個數通過乘二除二所能得到的所有的數,並且記錄得到這個數乘二除二的次數和有多少個數能轉換為這個數 include include include using namespace std const int maxn 200005 const int inf 0x3f3f3f3f int ...

51Nod 1483 化學變換 暴力 列舉

題目 有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試劑的量弄成相等。有兩種操作 把第i種的量翻倍,即第i種的量變成2ai。把第i種的量減半,除的時候向下取整。現在所有的化學試劑的量已知,問最少要變換多少次,這...