ガジェット通信 GetNews

見たことのないものを見に行こう

【選択式問題】端数処理パズル【言語不問】解答と解説

DATE:
  • ガジェット通信 GetNewsを≫

端数処理パズル

本問題は、仮想コードのルールに従った処理の結果を、選択肢から選ぶというものでした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、端数処理の女神「ラウン=ディング」の神殿にやって来ました。

この神殿では、女神の出す問題に正解すれば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神の意図をくんで解答しなければなりません。

この神殿では、仮想コードが提示されます。その計算結果を、選択肢から選んでください。

// 仮想コードのルール
Math.ceil(n) …… nの端数(小数点以下)を切り上げ
Math.floor(n) …… nの端数(小数点以下)を切り捨て
Math.round(n) …… nの端数(小数点以下)を四捨五入
A * B …… AとBを乗算
out(n) …… nを整数として出力

問題1

// 問題
out(Math.ceil(1.23) * Math.floor(4.56));

// 選択肢
4
5
8
10

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理
out(Math.ceil(1.23) * Math.floor(4.56)); をまずは計算。

「Math.ceil」は切り上げなので、「1.23」は「2」になる。

out(2 * Math.floor(4.56));

↓↓↓↓↓

out(2 * Math.floor(4.56)); を計算。

「Math.floor」は切り捨てなので、「4.56」は「4」になる。

out(2 * 4);

↓↓↓↓↓

out(2 * 4); を計算。

「2 * 4」は「8」になる。

out(8);

なので「8」を出力。

上記の通り、答えは3番目の選択肢の『8』になります。

Javaサンプル

以下、サンドボックスの言語「Java8」を利用して、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// 問題
out(Math.ceil(1.23) * Math.floor(4.56));
}
// 関数
public static void out(double n) {
System.out.println((int)n); // 出力
}
}

// 出力結果
8

JavaScriptサンプル

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 関数
var out = function(arg) {console.log(arg | 0)};

// 問題
out(Math.ceil(1.23) * Math.floor(4.56));

// 出力結果
8

問題2

// 問題
out(Math.round(1.23) * Math.round(4.56));

// 選択肢
4
5
8
10

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理
out(Math.round(1.23) * Math.round(4.56)); をまずは計算。

「Math.round」は四捨五入なので、「1.23」は「1」になる。

out(1 * Math.round(4.56));

↓↓↓↓↓

out(1 * Math.round(4.56)); を計算。

「Math.round」は四捨五入なので、「4.56」は「5」になる。

out(1 * 5);

↓↓↓↓↓

out(1 * 5); を計算。

「1 * 5」は「5」になる。

out(5);

なので「5」を出力。

上記の通り、答えは2番目の選択肢の『5』になります。

Javaサンプル

以下、サンドボックスの言語「Java8」を利用して、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// 問題
out(Math.round(1.23) * Math.round(4.56));
}
// 関数
public static void out(double n) {
System.out.println((int)n); // 出力
}
}

// 出力結果
5

JavaScriptサンプル

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 関数
var out = function(arg) {console.log(arg | 0)};

// 問題
out(Math.round(1.23) * Math.round(4.56));

// 出力結果
5

問題3

// 問題
out(Math.ceil(1.23) * Math.floor(3.45) * Math.round(5.67));

// 選択肢
15
18
20
24
30
36
40
48

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理
out(Math.ceil(1.23) * Math.floor(3.45) * Math.round(5.67)); をまずは計算。

「Math.ceil」は切り上げなので、「1.23」は「2」になる。

out(2 * Math.floor(3.45) * Math.round(5.67));

↓↓↓↓↓

out(2 * Math.floor(3.45) * Math.round(5.67)); を計算。

「Math.floor」は切り捨てなので、「3.45」は「3」になる。

out(2 * 3 * Math.round(5.67));

↓↓↓↓↓

out(2 * 3 * Math.round(5.67)); を計算。

「Math.round」は四捨五入なので、「5.67」は「6」になる。

out(2 * 3 * 6);

↓↓↓↓↓

out(2 * 3 * 6); を計算。

「2 * 3 * 6」は「36」になる。

out(36); を計算。

なので「36」を出力。

上記の通り、答えは6番目の選択肢の『36』になります。

Javaサンプル

以下、サンドボックスの言語「Java8」を利用して、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
class Main{
public static void main(String[]args) {
// 問題
out(Math.ceil(1.23) * Math.floor(3.45) * Math.round(5.67));
}
// 関数
public static void out(double n) {
System.out.println((int)n); // 出力
}
}

// 出力結果
36

JavaScriptサンプル

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード

// 関数
var out = function(arg) {console.log(arg | 0)};

// 問題
out(Math.ceil(1.23) * Math.floor(3.45) * Math.round(5.67));

// 出力結果
36

CodeIQ運営事務局より

柳井さん、ありがとうございました!
現在、柳井さんの最新問題が出題中です。
ぜひ挑戦してみてくださいね!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。