HOME»応用情報技術者試験掲示板»平成27年度春期問2の解答について
投稿する

平成27年度春期問2の解答について [2060]

 sakutyannさん(No.1) 
  x1x2=11(2)=3(10)
  x2x1=11(2)=3(10)
  int(x/2)=1
上記は理解できたのですが、下記の計算の意味がよく分かりませんでした。
  3=2*3-a
  a=3
このaの意味がよく分かりません。どなたかご教授くださいませんでしょうか。
2020.07.18 06:52
助け人さん(No.2) 
AP ゴールドマイスター
選択肢ア~エは、全て
2x+a*int(x/2)
の形式です。

x2x1=2x+a*int(x/2)
に、x2x1=3、x=x1x2=3、int(x/2)=1を代入して、
3=2*3+a*1
a=-3
の方がいいですね。

解説の
3=2*3-a
だと、まるでウかエに絞っているみたいです。
2020.07.18 08:48
おわ!さん(No.3) 
AP ブロンズマイスター
助け人さん

とても分かりやすいです。
ペン動かし理解しました。
勉強になりました。
ありがとうございました。
2020.07.18 20:01
助け人さん(No.4) 
AP ゴールドマイスター
https://www.ap-siken.com/kakomon/27_haru/q2.html

おわ!さん
スレ主さん以外から返信いただくとは思いませんでした。誰からでも返信いただくと、投稿しがいがあります。最近、返信がないことが多いです。(基本情報でも)

せっかくなので、別解を考えました。解説にあるような正攻法や代入法以外にも、こういう解き方もあるのだ、というものです。この問題限りですから、お薦めはしませんが。

x2x1は、0~3の範囲です。
xが2のときに、アは8、イは9となり、除外。アとエは、偶数にしかならないので、除外。これにて終了。

int(x/2)の前の係数に着目した直感と消去法です。でも、お薦めは、やはり正攻法です。
2020.07.18 21:11
 sakutyannさん(No.5) 
こんばんは。回答ありがとうございます。

選択肢ア~エは、全て
2x+a*int(x/2)
の形式です。

なるほど、そのように仮定していたのですね。
突然aが出てきたので何かなと思っていました。
後は、ただ、代入してa=-3に該当するウを選べばよいということですね。
2020.07.19 00:19
おわ!さん(No.6) 
AP ブロンズマイスター
助け人さん

No.2での解法も、私にとっては斬新なものでした。
さらに別解を考えて頂き、恐れ入ります。

x2x1、x1x2(=x)は0~3の範囲なので、
x=2のときを考え、
ア~エを、int(x/2)を含む項を係数のみの項に変えてから、
x2x1=1と比較

ア:2×2+4
イ:2×2+5
ウ:2×2-3
エ:2×2-4

これでもぐっと楽になりますが、
アとエは偶数なので除外、イは計算してNGなのでウが残る、
と計算を最小限にしていてお見事です。

本番では別解が思い付くとは限りませんので、
お薦めにもありましたように、あくまで正攻法で解きます。
いろいろとご教示ありがとうございました。

以下、蛇足です。
今回の別解につきまして、自分は範囲0~3のヒントから、
すぐx=2が浮かばず、以下の思考になってしまい、
早く解けたわけではありません。
その意味でも、正攻法でやった方がよさそうです。
---------------------------------------------------
x2x1、x1x2(=x)の範囲は10進数の0~3になる。
x=0、x=1の場合、int(x/2)=0 なので、
ア~エが全て2xになり、正解を絞り込めないので、
x=2かx=3の場合を考える。

x=2(x1=1、x2=0)の場合、
x2x1=01=1となる。
各選択肢は、2*x=4、int(x/2)=1なので
ア:4+4
イ:4+5
ウ:4-3
エ:4-4
となり、ウが正解。
---------------------------------------------------
2020.07.19 01:11
助け人さん(No.7) 
AP ゴールドマイスター
おわ!さん

具体的な値を順番に代入して確かめる方法は、手間がかかりますね。ただ、この問題の正攻法は、数学を用いないといけません。

なお、No.5の
アとエは、偶数にしかならないので、除外。
について補足すると、
アとエは、xが2のときに限らず、xがどんな値のときでも偶数にしかならないので、除外。
と言う意味です。
2020.07.19 07:15
おわ!さん(No.8) 
AP ブロンズマイスター
助け人さんへ

早速のご返信ありがとうございます。

下記の補足ありがとうございます。
>「アとエは、xが2のときに限らず、xがどんな値のときでも偶数にしかならないので、除外。」

について確認致しました。まだ誤解ありましたら申し訳ありません。

・設問の条件「xは整数」より、xの値によらず、「2*x」は偶数となる。
・設問の条件「int(r)は非負の実数r の小数点以下を切り捨てた整数」より、
  int(x/2)は整数なので、xの値によらず、「4*int(x/2)」は偶数になる。
  
アは(偶数)+(偶数)、エは(偶数)-(偶数)
なので、xの値によらず、必ず偶数になる。

正攻法も、私の認識が間違っているかもしれません。
別途確認致します。
2020.07.19 07:55
おわ!さん(No.9) 
AP ブロンズマイスター
正攻法その1です。

・選択肢の2*x、int(x/2)に着目
・2進数に[b]を付与

x=x1x2[b]を10進数表記した式を変形して
2*x、int(x/2) とx1、x2の関係を導き
x2x1[b]の10進数表記を変数xのみの式にする。

x=x1x2[b]=2*x1+x2より、
2*x=4*x1+2*x2・・・式1

x/2=x1+{(x2)/2}=(x1.x2)[b]より、
int(x/2)=x1・・・式2

x2x1[b]
=2*x2+x1
=(2*x-4*x1)+x1(式1より)
=2*x-3*x1
=2*x-3*int(x/2)(式2より)
2020.07.19 10:23
おわ!さん(No.10) 
AP ブロンズマイスター
正攻法その2です。

・2進数の掛算と割算はビットシフト操作であることに着目
・2進数に[b]を付与

(x2 x1)[b]=(x2 0)[b]+(0 x1)[b]・・・式1

(x2 0)[b]は、x=(x1 x2)[b]を1ビット左シフトした
2*x=(x1 x2 0)[b]から(x1 0 0)[b]を除去した式なので
(x2 0)[b]=2*x-4*x1・・・式2

(0 x1)[b]は、x=(x1 x2)[b]を1ビット右シフトした
x/2=(0 x1.x2)[b]から小数点以下を切り捨てた整数なので
(0 x1)[b]=int(x/2)・・・式3
式3を変形して
x1=int(x/2)・・・式4

式1に式2~4を代入し、
(x2 x1)[b]
=(2*x-4*x1)+int(x/2)
={2*x-4*int(x/2)}+int(x/2)
=2*x-3*int(x/2)
2020.07.19 11:04
助け人さん(No.11) 
AP ゴールドマイスター
おわ!さん

二つの正攻法とも完璧です。

以下、私の正攻法です。

x=2*x1+x2  ・・・  式①
問われているy=2*x2+x1  ・・・  式②

yをxだけで表せればいいのですが、この二つの式だけではダメです。

解答群のint(x/2)が気になるので、式①の両辺の2分の1のintをとると、
int(x/2)=x1  ・・・  式③

式①よりx2=x-2*x1を式②に代入してx2を消します。
y=2*x2+x1=2*(x-2*x1)+x1=2*x-3*x1
このx1に式③を代入すると、ウとなります。
2020.07.19 12:32
おわ!さん(No.12) 
AP ブロンズマイスター
助け人さん

ご教示ありがとうございます。

私の正攻法は2進数と10進数が混在しているため、
煩雑さと計算ミスの心配が残っていますが、
助け人さんの正攻法は、
一貫して10進数で計算されていますので、
すっきりしていて、計算ミスが解消されますね。

予備知識を総動員しようとして煩雑に解くのではなく、
2進数→10進数の変換、intの処理といった、
必要最小限のポイントを押さえることと、
変数を一つ導入することで、
こんなにも見通しがよくなるのか、と感嘆致しました。
No.7でコメント頂いた「数学を用いる」に悩みましたが、
この工夫のことだったのかと、理解致しました。

大変勉強になりました。
ありがとうございました。
2020.07.19 13:57

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop