大幅に大幅に大きなこんにちは皆、私はまだあなたのハンサム押し霞います。バウンスどこおかしいのか分からない
今日のトピックで共有し続けます
件名の説明:
ベッシーは再びファーマージョンの家に押し入りました!彼女は台所で(各杭の無限の数があります)レモンとオレンジの束の束を見つけ、彼女はできるだけ食べることを望んでいます。
ベッシーは満腹Tの上限は(1 <= T <= 5,000,000)。オレンジを食べると、彼女はBを指すよう満腹値(1 <= A、B <増加しますレモンを食べて、彼女に満腹値のポイントを増やすことができます = T)、 彼女は喜んであれば、ベッシーは一度ほとんどで水を飲むことができるが、それはすぐになります彼女の満腹値が半分になる作る、あなたが利用できる彼女の最大値の膨満感を見つけるベッシーヘルプ。
入力:
三つの整数T、AとBの行
出力:
達成可能な最大ベッシーの満腹値を表す線アン整数
サンプル入力:
856
サンプル出力:
8
はい、あなたはターンターンターンで水の問題でその権利を読んで
アイデア:答えはすでに存在していたされており、もはやを列挙する必要がない場合はノンストップ、マークのメモリアレイと、満腹値の列挙様々なアイテムを検索します。。。
uses math;
var
bz:array[1..6000000]of boolean;
i,j,k,n,m,a,b,ans,t:longint;
procedure dg(l,r:longint);
begin
if ((l>t)or(bz[l])) then exit;
bz[l]:=true;
ans:=max(ans,l);
dg(l+a,r);
dg(l+b,r);
if r=0 then dg(l div 2,1);
end;
begin
assign(input,'fruit.in');reset(input);
assign(output,'fruit.out');rewrite(output);
read(t,a,b);
dg(a,0);
dg(b,0);
write(ans);
end.