0

Javaプログラムを作成していますが、数学の問題を扱っていますが、解決できないようです。これは私の課題です:

I have infinite numbers of numbered papers(1,2,3, ..). 
This papers are stacked into stacks using 2 variables a and b.

If a = 5 and b = 3 the stacks look like:

ここに画像の説明を入力

So the first stack has "a" items (5) and each next has "b" more (3) as previous.

ここで、特定の 1 枚に到達するために何枚の紙を取り除く必要があるかを示す方程式を見つけなければなりません。

たとえば、20 の番号が付けられた紙に到達したい場合、そこに到達するには 4 つの紙を削除する必要があります。そして、これが私が探している解決策です。特定の紙の番号を入力するとき、それに到達するために(それが入っているスタック内で)どれだけ移動する必要があるかを知る必要があります。これを手に入れたら、すべての書類を元に戻し、次の書類を探します。

それを使って長い数 (最大 16 桁) を扱うプログラムを作成するので、最良の解決策は「非ループ」方程式を見つけることです。たとえば、a = 34354 と b = 56774 を設定し、533663634611112 の番号が付けられた紙を取得するために削除する紙の数を知りたい場合。

私の入力は次のようになります:
- 番号 a と b
- 到達したい論文の数 (c)
- 上記の変数 (c) に関して、番号付きの論文を表すこの多くの数字を入力します

出力:
- 挿入したすべての紙に到達するために移動する必要がある紙の数

すべての番号が非常に長くなるので、ループのないプログラムを作成するのが最適です。この問題についてご協力いただきありがとうございます。

4

3 に答える 3

0

これを行うには、ある種のループが必要です。私は数学を手伝うことができますが、他の誰かがプログラミングを手伝わなければならないかもしれません

j=1
TOTAL = ja + (j-1)b
If the TOTAL is less than c, then let j=j+1 and loop
If the TOTAL is greater than c, end the loop (this loop shouldn't take too long)
Then calc TOTAL - c from it to get your answer

その方法はうまくいくはずです。しかし、このようなループは、長い数値であってもそれほど電力を消費しないはずです。

于 2014-11-14T09:04:25.630 に答える