1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみた。(2)

Posted at

paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみました。


問題
大きな数値を3けたごとにカンマ区切りで出力(けた数は3の倍数です)

大きな数値を3けたごとにカンマ区切りで出力2(けた数は3の倍数とは限りません)


方針

前回は1桁ずつ出力していましたが、今回は3桁ずつ出力します。

  1. けた数が3の倍数
    • 自然数$N$を文字列として受け取ります
    • 自然数$N$のけた数(バイト数)を$d$とします
    • $i=0,3,...,d-3$について
      • $i>0$ならば
        • ,を出力します
      • 自然数$N$の上位$i+1$けた目から$3$けた出力します
    • 改行を出力します
  2. けた数は3の倍数とは限らない
    • 自然数$N$を文字列として受け取ります
    • 自然数$N$のけた数を$d$とします
    • $d$を$3$で割った余りを$r$とします
    • 自然数$N$の先頭$r$けたを出力します
    • $i=r,r+3,...,d-3$について
      • $i>0$ならば
        • ,を出力します
      • 自然数$N$の上位$i+1$けた目から$3$けた出力します
    • 改行を出力します

2.のコードでも1.を正解することができます。


C
3の倍数のけた数
#include <stdio.h>
#include <string.h>

int main() {
	char n[1002];
	scanf("%s", n);
	int d = (int) strlen(n);
	for (int i = 0; i < d; i += 3) {
		if (i > 0) putchar(',');
		char s[4] = "";
		s[3] = '\0';
		printf("%s", strncpy(s, n + i, 3));
	}
	puts("");
	return 0;
}
3の倍数とは限らないけた数
#include <stdio.h>
#include <string.h>

int main() {
	char n[1002];
	scanf("%s", n);
	int d = (int) strlen(n);
	int r = d % 3;
	char s[4] = "";
	s[r] = '\0';
	printf("%s", strncpy(s, n, r));
	for (int i = r; i < d; i += 3) {
		if (i > 0) putchar(',');
		s[3] = '\0';
		printf("%s", strncpy(s, n + i, 3));
	}
	puts("");
	return 0;
}

C++
3の倍数のけた数
#include <iostream>
using namespace std;

int main() {
	string n;
	cin >> n;
	int d = (int) n.size();
	for (int i = 0; i < d; i += 3) {
		if (i > 0) cout << ',';
		cout << n.substr(i, 3);
	}
	cout << endl;
	return 0;
}
3の倍数とは限らないけた数
#include <iostream>
using namespace std;

int main() {
	string n;
	cin >> n;
	int d = (int) n.size();
	int r = d % 3;
	cout << n.substr(0, r);
	for (int i = r; i < d; i += 3) {
		if (i > 0) cout << ',';
		cout << n.substr(i, 3);
	}
	cout << endl;
	return 0;
}

C#
3の倍数のけた数
using System;

class Program
{
	public static void Main()
	{
		string n = Console.ReadLine();
		int d = n.Length;
		for (int i = 0; i < d; i += 3) {
			if (i > 0) Console.Write(',');
			Console.Write(n.Substring(i, 3));
		}
		Console.WriteLine();
	}
}
3の倍数とは限らないけた数
using System;

class Program
{
	public static void Main()
	{
		string n = Console.ReadLine();
		int d = n.Length;
		int r = d % 3;
		Console.Write(n.Substring(0, r));
		for (int i = r; i < d; i += 3) {
			if (i > 0) Console.Write(',');
			Console.Write(n.Substring(i, 3));
		}
		Console.WriteLine();
	}
}

Go
3の倍数のけた数
package main
import "fmt"

func main() {
	var n string
	fmt.Scan(&n)
	d := len(n)
	for i := 0; i < d; i += 3 {
		if i > 0 {
			fmt.Print(",")
		}
		fmt.Print(n[i:i+3])
	}
	fmt.Println()
}
3の倍数とは限らないけた数
package main
import "fmt"

func main() {
	var n string
	fmt.Scan(&n)
	d := len(n)
	r := d % 3
	fmt.Print(n[:r])
	for i := r; i < d; i += 3 {
		if i > 0 {
			fmt.Print(",")
		}
		fmt.Print(n[i:i+3])
	}
	fmt.Println()
}

Java
3の倍数のけた数
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.nextLine();
		sc.close();
		int d = n.length();
		for (int i = 0; i < d; i += 3) {
			if (i > 0) System.out.print(',');
			System.out.print(n.substring(i, i + 3));
		}
		System.out.println();
	}
}
3の倍数とは限らないけた数
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.nextLine();
		sc.close();
		int d = n.length();
		int r = d % 3;
		System.out.print(n.substring(0, r));
		for (int i = r; i < d; i += 3) {
			if (i > 0) System.out.print(',');
			System.out.print(n.substring(i, i + 3));
		}
		System.out.println();
	}
}

JavaScript
3の倍数のけた数
const n = require("fs").readFileSync("/dev/stdin", "utf8").trim();
const d = n.length;
let m = "";
for (var i = 0; i < d; i += 3) {
	if (i > 0) m += ",";
	m += n.substring(i, i + 3);
}
console.log(m);
3の倍数とは限らないけた数
const n = require("fs").readFileSync("/dev/stdin", "utf8").trim();
const d = n.length;
const r = d % 3;
let m = n.substring(0, r);
for (var i = r; i < d; i += 3) {
	if (i > 0) m += ",";
	m += n.substring(i, i + 3);
}
console.log(m);

Kotlin
3の倍数のけた数
fun main() {
	val n = readLine()!!
	val d = n.length
	for (i in 0 until d step 3) {
		if (i > 0) print(',')
		print(n.substring(i, i + 3))
	}
	println()
}
3の倍数とは限らないけた数
fun main() {
	val n = readLine()!!
	val d = n.length
	val r = d % 3
	print(n.substring(0, r))
	for (i in r until d step 3) {
		if (i > 0) print(',')
		print(n.substring(i, i + 3))
	}
	println()
}

PHP
3の倍数のけた数
<?php
	$n = trim(fgets(STDIN));
	$d = strlen($n);
	for ($i = 0; $i < $d; $i += 3) {
		if ($i > 0) echo ',';
		echo substr($n, $i, $i + 3);
	}
	echo PHP_EOL;
?>
3の倍数とは限らないけた数
<?php
	$n = trim(fgets(STDIN));
	$d = strlen($n);
	$r = $d % 3;
	echo substr($n, 0, $r);
	for ($i = $r; $i < $d; $i += 3) {
		if ($i > 0) echo ',';
		echo substr($n, $i, $i + 3);
	}
	echo PHP_EOL;
?>

Perl
3の倍数のけた数
chomp(my $n = <STDIN>);
my $d = length($n);
for (my $i = 0; $i < $d; $i += 3) {
	if ($i > 0) {
		print ',';
	}
	print substr($n, $i, 3);
}
print $/;
3の倍数とは限らないけた数
chomp(my $n = <STDIN>);
my $d = length($n);
my $r = $d % 3;
print substr($n, 0, $r);
for (my $i = $r; $i < $d; $i += 3) {
	if ($i > 0) {
		print ',';
	}
	print substr($n, $i, 3);
}
print $/;

Python3
3の倍数のけた数
n = input()
d = len(n)
for i in range(0, d, 3):
	if i > 0:
		print(',', end="")
	print(n[i:i+3], end="")
print()
3の倍数とは限らないけた数
n = input()
d = len(n)
r = d % 3
m = n[:r]
for i in range(r, d, 3):
	if i > 0:
		m += ','
	m += n[i:i+3]
print(m)

Ruby
3の倍数のけた数
n = gets.chomp
d = n.size
0.step(d - 3, 3) do |i|
	if i > 0
		print ','
	end
	print n[i...i+3]
end
puts
3の倍数とは限らないけた数
n = gets.chomp
d = n.size
r = d % 3
print n[0...r]
r.step(d - 3, 3) do |i|
	if i > 0
		print ','
	end
	print n[i...i+3]
end
puts

Scala
3の倍数のけた数
import scala.io.StdIn._

object Main extends App{
	val n = readLine()
	val d = n.length
	for (i <- 0 until d by 3) {
		if (i > 0) {
			print(",")
		}
		print(n.substring(i, i + 3))
	}
	println()
}
3の倍数とは限らないけた数
import scala.io.StdIn._

object Main extends App{
	val n = readLine()
	val d = n.length
	val r = d % 3
	print(n.substring(0, r))
	for (i <- r until d by 3) {
		if (i > 0) {
			print(",")
		}
		print(n.substring(i, i + 3))
	}
	println()
}

Swift
3の倍数のけた数
let n = readLine()!
let d = n.count
var m = ""
for i in stride(from: 0, to: d, by: 3) {
	if i > 0 {
		m += ","
	}
	m += n[n.index(n.startIndex, offsetBy: i)..<n.index(n.startIndex, offsetBy: i + 3)]
}
print(m)
3の倍数とは限らないけた数
let n = readLine()!
let d = n.count
let r = d % 3
var m = n[n.index(n.startIndex, offsetBy: 0)..<n.index(n.startIndex, offsetBy: r)]
for i in stride(from: r, to: d, by: 3) {
	if i > 0 {
		m += ","
	}
	m += n[n.index(n.startIndex, offsetBy: i)..<n.index(n.startIndex, offsetBy: i + 3)]
}
print(m)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?