タイトル説明
P nは教師は、子どもたちがNOIPのギフトを参加として鉛筆を買いに店に行く必要があります。彼女は店に合計見つかった 3 異なる可能性が異なるパッケージの数で包装鉛筆、鉛筆の3種類、価格は変更される場合があります。公平を期すためには、Pの先生は鉛筆の同じパッケージを購入することを決めました。
ショップは、Pの先生はより多くを購入する必要があるかもしれないので、鉛筆のパッケージを開くことが許可されていないN-を子どもたちが贈り物を送信するためにためのn-鉛筆で十分です。
今Pの先生は各パッケージの数は、少なくとも十分に購入するには、十分なものである保存、知りたいと思ったN- 多くのお金を費やす必要以上のn-鉛筆を。
入力形式
最初の行は、正の整数含まN- 、N-必要鉛筆の数を表します。
次の3行2つの2つの正の整数説明包装さ鉛筆:前記第1 のAは、ペンシル内のこのようなパッケージの整数、最初表し2つの2価格整数ようなパッケージ。
すべてのことを確認してください。7 7桁以下である10000 。1 0 0 0 0を含む正の整数。
出力フォーマット
1 お金を表す整数は、少なくともP教師を取ります。
サンプル入力と出力
1 57 2 2 2 3 50 30 4 30 27
1 57
1 9998 2 128 233 3 128 2333 4 128 666
1 18407
1 9999 2 101 1111年 3 1 9999 4 1111 9999
1 89991
説明/ヒント
鉛筆三つの異なる包装材は、次のとおりです。
- 2 2負荷速度は2 2。
- 50 。5 0率があることを意味30 3。0であり;
- 30 。3 0手段率は27 2 7
Pの先生は、少なくとも購入する必要があります57本の5 7鉛筆を。
彼女は最初のパッケージを購入することを選択した場合、その後、彼女は購入したい29 2 合計、9部を2 \ =タイムズ29 58 2 × 2 。9 = 。5 。8本のスティックを、お金はそれがためにかかる2 \ =タイムズ29 58 2 × 2 。9 = 5 8
実際には、Pの教師は、第三のパッケージを購入することを選択しますので、あなたは購入する必要がある2つの2コピーを。なおに利用できる最終的な鉛筆より多く、30 \ 60倍= 2 。3 0 × 2 = 6本の0スティックが、コストはに減少した27 \ 54は、2倍=で2 。7 × 2 = 5 。4、第より少ないです。
第二のパッケージについては各ペンシルが最低価格ですが、送信するのに十分な購入する必要があるものの、2 2部を、実際のコストは、到達した 30 \タイムズ2 = 60 。3 0 × 2 = 6 0、したがって、無教師P彼らは、選択されます。
だから、答えは最終的な出力ということである54です。5 4
[サブタスク]
サブタスクは、テストデータの特性の一部を説明します。あなたが問題を解決するために問題が発生した場合は、試験データの一部のみを解決しようとすることができます。
データサイズと次の表の各テストポイントの特性:
「整数倍」を意味テーブルの上にある:それはある場合K K、データを対応する鉛筆の数が必要示しN- N-鉛筆セットは(あなたが必ずしも鉛筆を買うことができないことを意味する)、各整数倍のためのパッケージの数です。
問題の解決策
-
分析
重要蓄積するビット演算を使用し、倍増のアイデアです
。1 I << 1は同等です* I 2
-
問題の解決策
1つの#include <ビット/ STDC ++ H.> 2 使用して 名前空間STD; 3 INT I、J、K、N-、M、W、ANS; 4 int型のmain() 5。 { 6。 scanfの(" %のD "、およびN-)。 7 ための(I = 0 ;私は< 3 ; I ++ ) 8 { 9 scanfの(" %のDの%のD "、&J、およびK); 10 、M = J; 11 W = K; // 入力共存初期価格と番号 12は 、一方(J <N-) 13である { 14 J = << 1。; 15 K = << 1。 ; // 価格増加数は2 * N-より大きくなるまで 16 } 17。 一方、(J> N-) 18である { 19。 J- = M; 20であります - K- W =; // * 2を購入するあまりにつながる可能性があり、マイナスの一部 21である } 22であり 、一方(J < N-) 23は 、{ 24 J + = M; 25 ; K = Wの+ //は、減算後小さすぎる可能性があり、およびプラスいくつか 26 } 27 IF(K <|| ANS ANS == 0 ) 28 ANS = K; //は最小コストであるかどうかを決定する 29 } 30 のprintf(" %d個の\ N- " 、ANS); 31である リターン 0 ; // 出力とリターン 32 }