2012-04-02 1 views
1

私はアルゴリズムベースのプログラミング問題を練習していました。この問題を解決するには難しかったです。私はこの問題を効率的に解決するためのアイデア(小さなアプローチ/ヒントのみ)が必要です。 ここに問題がありますStatement ::いくつのポーションがありますか?

ウサギfooとウサギバーという名前のウサギが2つあるとします。最初はお互いに向いている起点(中心)にあります。

Fooはm長さを左にm長さ、m長さを右に、n長を左に、またはn長を 右に一度にジャンプすることができます。

同様に、バーはp、qの2つのジャンプのみを知ることができます。バーはp長さを左に、p長を右に、q長を左に、q長を右に、それぞれ 一回の試み。

今、これらの2匹のウサギのマスターは、ウサギの両方が1回以上の試みで彼のマスターに達することができるように、ある時点で自分自身を正確に配置したいと考えています。 また、原点から離れた最大Lの長さのマスター地点自身。 マスターは自分が置くことができる位置の数を計算する必要があります。

m、n、p、qおよびLは非常に大きく、10^17ほど大きい。

どのように効率的に解決するか。

例::

M = 1、N = 2

M = 4、N = 5

L = 1

回答= 3。

Fooのよう

することができますが、彼の右側に、彼の左側にその1つの長さの後に2の長さをジャンプします。

バーは、彼のrgtまで5つの長さをジャンプすることができ、その後4つのlenthは彼の左側にジャンプすることができます。

原点から1単位離れた彼の主人に到達する。

フー2長さ左後1横右サイド。 バー5長さ左5長さ原点から1長さに自分自身を位置させるまで

fooとbarの両方が2つの移動でマスターに達することができるので、マスターも元に置くことができます 合計位置= 3となる。

他の例::

M = 2、N = = 7

回答4

p = 3、Q = 6

L = 3。= 9

答え

M = 10、N = 12

p = 3、Q = 5

+0

あなたに適したソリューションを手に入れたら、それを受け入れられた回答としてマークして、将来の読者がどの答えがあなたのために働いたのかを知っておく必要があります。あなたはこれを理解していないようです。 – Rushil

答えて

5

fooがgcd(m,n)とのみの倍数である任意の位置に達することができます。バーはgcd(p,q)の倍数の位置に到達することができるため、両方で到達可能な位置は正確にlcm(gcd(m,n),gcd(p,q))の倍数になります。

+0

@ Daniel Fischer:ありがとう!しかし、これを解決するために 'L'を使用する方法。正確な解決策は何でしょうか。 –

+1

@Jack - '(小さなアプローチ/ヒントのみ)'には正確な解決策が含まれていません。P –

+0

@Jack:ヒントが大きすぎるアイデア(小さなアプローチ/ヒントのみ)が必要です。 =)この答えは基本的にあなたの問題を解決します。 – ninjagecko

1

M(HCF(、B)およびHCF(CD)) の = LCMは、次に答えは= 2 * [K/Mになる場合] +基本的

1は、移動することができる最短距離者は(HCFありますb)、同様に人とB。はであることができる

最小位置(0に最も近い)の両方 & Bは、両方HCF SのLCMあります。 +1は中心です。そのLCMの倍数は、両側にkの範囲である必要があります。

だからMによってKを分割し、(0の両側のために)分割の一体部分を倍増し、(中心のための)1を加えます。希望が役立ちます。

関連する問題