第10回【JavaScript】10 進数から 2 進数に変換、10 進数から M 進数に変換

現在取り組んでいるのは、paiza ラーニング問題集「ループメニュー 2」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 10 回目です。

可能な限り布団に入る時間、睡眠時間を一定に保つようにしています。それでも、勉強が楽しくなって、布団に入る時間が遅くなってしまう日も。睡眠の大切さを誰よりも知っているつもりなので、睡眠リズムは守りたいと思っています。

それでは、今日も頑張ってみようと思います。

10 進数から 2 進数に変換 (paizaランク D 相当)

10 進数で表された整数 N が与えられます。
N を 2 進数に変換して出力してください。


入力される値

N

・ 1 行で整数 N が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

N を 2 進数に変換して出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ N ≦ 100


入力例

6

出力例

110

簡単に出来るんだろうなぁ、と思いながら、2 で割っていくやつに挑戦してみる。あと、ちゃんと調べて簡単に出来るやつにも挑戦してみる。

JavaScript(2 で割っていくやつ)
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  let n = lines[0];
  let ans = '';
  while (n > 0) {
      ans = n % 2 + ans;
      n = Math.trunc(n / 2);
  }
  console.log(ans);
});
JavaScript(簡単にやっちゃうやつ)
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const n = lines[0];
  console.log(Number(n).toString(2));
});

しっかり型を意識してやらないと正解に辿り着けない。

Python
N = int(input())
ans = []
while N > 0:
    ans.append(N % 2)
    N //= 2
print(*ans[::-1],sep="")

10 進数から M 進数に変換 (paizaランク C 相当)

10 進数で表された整数 N, M が与えられます。
N を M 進数に変換して出力してください。


入力される値

N M

・ 1 行で整数 N, M が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

N を M 進数に変換して出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ N ≦ 100
・ 2 ≦ M ≦ 10


入力例

10 8

出力例

12

2 で割るやつ、を M で割るやつ、に変えればいいだけ。

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  let [n,m] = lines[0].split(/\s/).map(Number);
  let ans = '';
  while (n > 0) {
      ans = n % m + ans;
      n = Math.trunc(n / m);
  }
  console.log(ans);
});
Python
N,M = map(int,input().split())
ans = []
while N > 0:
    ans.append(N % M)
    N //= M
print(*ans[::-1],sep="")

最後に

意外と、この ● 進数変換って応用が利くと思う。知っていればお得。

型を意識する場面が出てきて、いろいろと調べてみた。数値変換においては、parseInt() より Number() の方が良いみたい。とても詳しく紹介してくださっていた方がいらっしゃって感謝です。

引き続き、よろしくお願いいたします!

Python の第10回はこちら