paizaラーニングレベルアップ問題集の「10進数から2進数に変換」「10進数からM進数に変換」をやってみました。
問題
10進数から2進数に変換
10進数からM進数に変換
方針
- $N>0$の間、以下繰り返します
- スタックに$N$を$M$で割った余りを挿入します
- $N$を$M$で割った商に置き換えます
- スタックが空になるまで
- スタックから値を取り出し、出力します
問題の制約条件から、スタックとして長さ7の配列を用意しておけば十分でしょう。また、$N=0$や$M>10$のケースについても考慮しておりません。
C
10進数から2進数に変換
#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進数に変換
#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進数に変換
#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進数に変換
#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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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進数に変換
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
$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
[$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進数に変換
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進数に変換
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進数に変換
n = int(input())
m = 2
D = []
while n:
D.append(n % m)
n //= m
print(''.join(list(map(str, reversed(D)))))
10進数からM進数に変換
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進数に変換
n = gets.to_i
m = 2
D = []
while n > 0
D << n % m
n /= m
end
puts D.reverse.join
10進数からM進数に変換
n, m = gets.split.map(&:to_i)
D = []
while n > 0
D << n % m
n /= m
end
puts D.reverse.join
Scala
10進数から2進数に変換
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進数に変換
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進数に変換
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進数に変換
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())