• ベストアンサー

【大至急】プログラムの整数問題(高校生向け)

非常に困っています!お手上げ状態です。最初の手順からひかかっています。②で、0をSの(最初の)値とするとは?次は(1回まわって?)1?③のTも同じく意味がわかりません。仮にNに12を入力したときは、S,Tはどうなっているのでしょう。 いずれにしましても、2問とも解答をしていただけると、大変うれしく大助かりです。どうぞよろしくお願いいたします。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • maskoto
  • ベストアンサー率53% (561/1040)
回答No.1

①では 入力した値=Nとなる ②、S=0となる ③Т=1となる 4、U=N=入力した値となる もしN=12を入力したならここまでで N=12、U=12、S=0、Т=1という状態です この数値だと、⑤の分岐では後者に当てはまるので、まだ出力は行われず6へ移る 無論、各文字の数値の変更はない(数値変更は指示されてない) ⑥の、分岐では、 ТU=1×12=Nなので、今回は前者の指示を実行して S+Т=0+1=1より Sを1に書き改める そして7へ ⑦指示に従いТ+1=1+1=2より Т=2に改める ここで数値を確認すると N=12、U=12、S=1、Т=2 となっている 8、実行で N÷Т=12÷2=6 →Uを6に改めて⑤へ移る これを繰り返して、5番の分岐で前者の指示が実行されたら、それが12より大きくなるはずです (Тは5〜8のループを繰り返すと、1づつ大きくなるので、七回目に5を実行したら出力となります) この要領で各問題ともN=1から順に 粘り強く計算をしてください ただし、 5〜8のループを一回こなすと Тは必ず1づつ増える Uは減少傾向 Sは⑥により基本書き換えが起きないが 時どき、Тの値を足し算して書き換えが行われることがある と言う事を踏まえると、計算を最後まで行う事なく、入力した値が答えになるか否か判断できますので、省エネになります 例、5を入力したとき ④まで実行して N=5、S=0、Т=1、U=5 →5〜8のループは3回と決まる →Тは、1または2にしかならない ТU=N=5となるのは Т=1、U=5のときだけ つまり、Sをかけかえるチャンスは 一回目に⑥を実行するときのみだか、 一回目の⑥実行ではSは1にしかならない →この後は、Sを書き変えるチャンスはない →これ以上計算しても無駄 というように、最後まで計算せず打ち切りの判断がつきます

mathsmaths
質問者

お礼

早々に、こんなにもわかりやすく説明してもらい感激です‼️このプログラミングは不勉強で、お手数をおかけすることになり、すみませんでした。本当にありがとうございました。

Powered by GRATICA

関連するQ&A

専門家に質問してみよう