ブルーブリッジカップ変更シミュレーション

問題の説明
  配列Aにはn個の要素があり、初期値は0です。配列に対して次の2つの操作を実行できます:1.配列の要素に1を追加する; 2.配列のすべての要素に2を乗算する。配列Aを初期状態からターゲット状態Bに変更するために必要なオペランドの最小数を見つけます。
入力フォーマット
  nは正の整数の最初の行は、アレイ内の要素の数を表し
  の第2行のN個の目標状態の正の整数Bの要素を表します
出力フォーマット
  出力ラインは操作の最小数を表します
入力例
2
7 8
出力例
7
データサイズと合意
  n <= 50、B [i] <= 1000
この質問はとても楽しいです。
正の解決策は、B配列をすべて0の配列に変更するには、少なくとも数ステップはかかると考えることです。
私はしばらくの間(1)に対して非常に抵抗力がありましたが、今では非常に便利な場合があります。
https://www.cnblogs.com/lusiqi/p/12547532.htmlからの参照
1 #include <bits / stdc ++。h>
 2  名前空間std を使用 3 int a [ 60 ];
4 int main(){
 5 int n;
6      cin >> n;
7 forint i = 1 ; i <= n; i ++ ){
 8          cin >> a [i];
9     }
 10 int ans = 0 ;
11 while1 ){
 12 forint i = 1                                ; i <= n; i ++ ){
 13              if(a [i]%2 == 1 ){
 14                  ans ++ ;
15                  a [i]- ;
16              }
 17          } 
 18          int cnt = 0 ;
19          forint i = 1 ; i <= n; i ++ ){
 20              if(a [i] == 0 ){
 21                  cnt ++ ;
22              }
 23          }
 24          if(cnt == n){
 25              休憩;
26          }
 27          forint i = 1 ; i <= n; i ++ ){
 28              a [i] / = 2 ;
29              
30          }
 31          ans ++ ;
32      }
 33      cout << ans << endl;   
34は     0を返し ます35 }

おすすめ

転載: www.cnblogs.com/fx1998/p/12716468.html