paizaラーニングレベルアップ問題集の「10進数から2進数に変換」「10進数からM進数に変換」をやってみた。

paizaラーニングレベルアップ問題集の「10進数から2進数に変換」「10進数からM進数に変換」をやってみました。
- - -
##### 問題
###### 10進数から2進数に変換
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__conv_binary
###### 10進数からM進数に変換
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__conv_nbase
- - -
##### 方針
- $N>0$の間、以下繰り返します
	- スタックに$N$を$M$で割った余りを挿入します
	- $N$を$M$で割った商に置き換えます
- スタックが空になるまで
	- スタックから値を取り出し、出力します

問題の制約条件から、スタックとして長さ7の配列を用意しておけば十分でしょう。また、$N=0$や$M>10$のケースについても考慮しておりません。
- - -
##### C
###### 10進数から2進数に変換
```c
#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	int m = 2;
	int D[7];
	int k = 0;
	while (n) {
		D[k++] = n % m;
		n /= m;
	};
	while (k--) printf("%d", D[k]);
	puts("");
	return 0;
}
```
###### 10進数からM進数に変換
```c
#include <stdio.h>

int main() {
	int n, m;
	scanf("%d %d", &n, &m);
	int D[7];
	int k = 0;
	while (n) {
		D[k++] = n % m;
		n /= m;
	};
	while (k--) printf("%d", D[k]);
	puts("");
	return 0;
}
```
- - -
##### C++
###### 10進数から2進数に変換
```cpp
#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	int m = 2;
	int D[7];
	int k = 0;
	while (n) {
		D[k++] = n % m;
		n /= m;
	}
	while (k--) cout << D[k];
	cout << endl;
	return 0;
}
```
###### 10進数からM進数に変換
```cpp
#include <iostream>
using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	int D[7];
	int k = 0;
	while (n) {
		D[k++] = n % m;
		n /= m;
	}
	while (k--) cout << D[k];
	cout << endl;
	return 0;
}
```
- - -
##### C#
###### 10進数から2進数に変換
```cs
using System;

class Program
{
	public static void Main()
	{
		int n = int.Parse(Console.ReadLine());
		int m = 2;
		int[] D = new int[7];
		int k = 0;
		while (n > 0) {
			D[k++] = n % m;
			n /= m;
		}
		while (k-- > 0) Console.Write(D[k]);
		Console.WriteLine();
	}
}
```
###### 10進数からM進数に変換
```cs
using System;

class Program
{
	public static void Main()
	{
		int[] nm = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
		int n = nm[0], m = nm[1];
		int[] D = new int[7];
		int k = 0;
		while (n > 0) {
			D[k++] = n % m;
			n /= m;
		}
		while (k-- > 0) Console.Write(D[k]);
		Console.WriteLine();
	}
}
```
- - -
##### Go
###### 10進数から2進数に変換
```go
package main
import "fmt"

func main() {
	var n int
	fmt.Scan(&n)
	m := 2
	var D [7]int
	k := 0
	for n > 0 {
		D[k] = n % m
		k += 1
		n /= m
	}
	for k > 0 {
		k -= 1
		fmt.Print(D[k])
	}
	fmt.Println()
}
```
###### 10進数からM進数に変換
```go
package main
import "fmt"

func main() {
	var n, m int
	fmt.Scan(&n, &m)
	var D [7]int
	k := 0
	for n > 0 {
		D[k] = n % m
		k += 1
		n /= m
	}
	for k > 0 {
		k -= 1
		fmt.Print(D[k])
	}
	fmt.Println()
}
```
- - -
##### Java
###### 10進数から2進数に変換
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.close();
		int m = 2;
		int[] D = new int[7];
		int k = 0;
		while (n > 0) {
			D[k++] = n % m;
			n /= m;
		}
		while (k-- > 0) {
			System.out.print(D[k]);
		}
		System.out.println();
	}
}
```
###### 10進数からM進数に変換
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		sc.close();
		int[] D = new int[7];
		int k = 0;
		while (n > 0) {
			D[k++] = n % m;
			n /= m;
		}
		while (k-- > 0) {
			System.out.print(D[k]);
		}
		System.out.println();
	}
}
```
- - -
##### JavaScript
###### 10進数から2進数に変換
```js
let n = Number(require("fs").readFileSync("/dev/stdin", "utf8"));
const m = 2;
let D = Array(0);
let k = 0;
while (n) {
	D.push(n % m);
	n = parseInt(n / m);
}
console.log(D.reverse().join(""));
```
###### 10進数からM進数に変換
```js
let [n, m] = require("fs").readFileSync("/dev/stdin", "utf8").split(' ').map(Number);
let D = Array(0);
let k = 0;
while (n) {
	D.push(n % m);
	n = parseInt(n / m);
}
console.log(D.reverse().join(""));
```
- - -
##### Kotlin
###### 10進数から2進数に変換
```kotlin
fun main() {
	var n = readLine()!!.toInt()
	val m = 2
	var D = IntArray(7)
	var k = 0
	while (n > 0) {
		D[k++] = n % m
		n /= m
	}
	while (k-- > 0) print(D[k])
	println()
}
```
###### 10進数からM進数に変換
```kotlin
fun main() {
	var (n, m) = readLine()!!.split(' ').map { it.toInt() }
	var D = IntArray(7)
	var k = 0
	while (n > 0) {
		D[k++] = n % m
		n /= m
	}
	while (k-- > 0) print(D[k])
	println()
}
```
- - -
##### PHP
###### 10進数から2進数に変換
```php
<?php
	$n = intval(fgets(STDIN));
	$m = 2;
	$D = [];
	while ($n) {
		$D[] = $n % $m;
		$n = intdiv($n, $m);
	}
	while ($D) echo array_pop($D);
	echo PHP_EOL;
?>
```
###### 10進数からM進数に変換
```php
<?php
	[$n, $m] = array_map("intval", explode(' ', fgets(STDIN)));
	$D = [];
	while ($n) {
		$D[] = $n % $m;
		$n = intdiv($n, $m);
	}
	while ($D) echo array_pop($D);
	echo PHP_EOL;
?>
```
- - -
##### Perl
###### 10進数から2進数に変換
```pl
my $n = int(<STDIN>);
my $m = 2;
my @D;
while ($n) {
	push @D, $n % $m;
	$n = int($n / $m);
}
while (@D) {
	print pop @D;
}
print $/;
```
###### 10進数からM進数に変換
```pl
my ($n, $m) = map { int($_) } split ' ', <STDIN>;
my @D;
while ($n) {
	push @D, $n % $m;
	$n = int($n / $m);
}
while (@D) {
	print pop @D;
}
print $/;
```
- - -
##### Python3
###### 10進数から2進数に変換
```py
n = int(input())
m = 2
D = []
while n:
	D.append(n % m)
	n //= m
print(''.join(list(map(str, reversed(D)))))
```
###### 10進数からM進数に変換
```py
n, m = map(int, input().split())
D = []
while n:
	D.append(n % m)
	n //= m
print(''.join(list(map(str, reversed(D)))))
```
- - -
##### Ruby
###### 10進数から2進数に変換
```rb
n = gets.to_i
m = 2
D = []
while n > 0
	D << n % m
	n /= m
end
puts D.reverse.join
```
###### 10進数からM進数に変換
```rb
n, m = gets.split.map(&:to_i)
D = []
while n > 0
	D << n % m
	n /= m
end
puts D.reverse.join
```
- - -
##### Scala
###### 10進数から2進数に変換
```scala
import scala.io.StdIn._

object Main extends App{
	var n = readInt()
	val m = 2
	val D = new Array[Int](7)
	var k = 0
	while (n > 0) {
		D(k) = n % m
		k += 1
		n /= m
	}
	while (k > 0) {
		k -= 1
		print(D(k))
	}
	println()
}
```
###### 10進数からM進数に変換
```scala
import scala.io.StdIn._

object Main extends App{
	var Array(n, m) = readLine().split(' ').map { _.toInt }
	val D = new Array[Int](7)
	var k = 0
	while (n > 0) {
		D(k) = n % m
		k += 1
		n /= m
	}
	while (k > 0) {
		k -= 1
		print(D(k))
	}
	println()
}
```
- - -
##### Swift
###### 10進数から2進数に変換
```swift
var n = Int(readLine()!)!
let m = 2
var D = [Int]()
while n > 0 {
	D.append(n % m)
	n /= m
}
print(D.reversed().map { String($0) }.joined())
```
###### 10進数からM進数に変換
```swift
let nm = readLine()!.split(separator: " ").compactMap { Int($0) }
var (n, m) = (nm[0], nm[1])
var D = [Int]()
while n > 0 {
	D.append(n % m)
	n /= m
}
print(D.reversed().map { String($0) }.joined())
```