基本情報技術者試験に挑戦しよう!「疑似言語のトレース(3)」

ITの基礎

科目Aの試験でよく出るmod

pを2以上の整数とする。 任意の整数nに対して、

n = kp + m  (0≦m<p)

を満たす整数kとmが一意に存在する。このmをnのpによる剰余といい、n mod p で表す。 (ー 10000) mod 32768に等しくなるものはどれか。

ア ー (10000 mod 32768)
イ  (ー22768) mod 32768
ウ  10000 mod 32768 
工  22768 mod 32768

正解:エ

n = kp + m  (0≦m<p)

この式のnを被除数、pを除数、kを商、mを剰余(余り)という。 式を変形すると、

m = – kp + n

になり、 剰余mを求める式となる。
つまり、m = n mod pは、m=ーkp + nで求めることができる。

問題のm=(ー10000) mod 32768は、m=ー(k)×32768+(ー10000)となる。

 mは剰余(余り) なので、0≦m<32768の範囲にあり、これを満たすkはー1である。

 m=ー(ー1) x 32768+ (ー10000) = 22768 

同様にして、解答群のアからエも計算していこう。 イ以外は、被除数も除数も正数で、被除数が除数よりも小さいので、単純に被除数が剰余となる。

ア ー (10000 mod 32768) = ー (10000) = ー10000

ウ 10000 mod 32768=10000

エ 22768 mod 32768=22768

これで工が正解だとわかった。イは被除数が負数である。

イ m=ー(k)×32768+ (ー22768)=ー32768kー22768

k=ー1のとき、m=10000

参考)うかる! 基本情報技術者 [科目B・アルゴリズム編] 2024年版 福嶋宏訓(著)日本経済新聞出版

コメント

タイトルとURLをコピーしました