paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみました。
問題
大きな数値を3けたごとにカンマ区切りで出力(けた数は3の倍数です)
大きな数値を3けたごとにカンマ区切りで出力2(けた数は3の倍数とは限りません)
方針
前回は1桁ずつ出力していましたが、今回は3桁ずつ出力します。
- けた数が3の倍数
- 自然数$N$を文字列として受け取ります
- 自然数$N$のけた数(バイト数)を$d$とします
- $i=0,3,...,d-3$について
- $i>0$ならば
-
,
を出力します
-
- 自然数$N$の上位$i+1$けた目から$3$けた出力します
- $i>0$ならば
- 改行を出力します
- けた数は3の倍数とは限らない
- 自然数$N$を文字列として受け取ります
- 自然数$N$のけた数を$d$とします
- $d$を$3$で割った余りを$r$とします
- 自然数$N$の先頭$r$けたを出力します
- $i=r,r+3,...,d-3$について
- $i>0$ならば
-
,
を出力します
-
- 自然数$N$の上位$i+1$けた目から$3$けた出力します
- $i>0$ならば
- 改行を出力します
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)