令和6年度 春期 応用情報技術者試験 午前 問5
テクノロジ/アルゴリズム正の整数 M に対して,次の二つの流れ図に示すアルゴリズムを実行したとき,結果 x の値が等しくなるようにしたい。a に入れる条件として,適切なものはどれか。

出典:令和6年度 春期 応用情報技術者試験 午前 問5
- アn<M
- イn>M−1
- ウn>M
- エn>M+1
正解:ウ
解説
左の流れ図は,nをMから1まで−1ずつ減らしながらx←x×nを繰り返す前判定ループで,結果はx=M!(Mの階乗)です。右の流れ図はx←1,n←1から始め,x←x×n,n←n+1を実行してから条件aを判定する後判定ループです。n=1のときx=1,nを2に更新後に判定し,n=2でx=1×2=2,……とn=kの乗算を終えた直後はnがk+1に更新されています。x=M!とするにはn=Mの乗算まで実行してから抜ける必要があり,その直後はn=M+1なので,抜ける条件はn>Mです。
選択肢ごとの解説
- ア誤り。n<Mでは,nが2になった時点(M>2なら)で条件が成立してしまい,1回の乗算(x=1)で抜けてしまうため,M!に届きません。
- イ誤り。n>M−1では,n=Mの乗算を行う前(nがMになった時点)で抜けてしまうため,x=(M−1)!までしか求まりません。
- ウ正しい。n=Mの乗算を終えてnがM+1になった直後に抜ける条件がn>Mであり,これでx=M!となります。
- エ誤り。n>M+1では,n=M+1の乗算まで行ってから抜けるため,x=(M+1)!となり,M!より大きな値になってしまいます。