paizaラーニングレベルアップ問題集の【大きな数値を3けたごとにカンマ区切りで出力】をやってみました。
問題
大きな数値を3けたごとにカンマ区切りで出力(けた数は3の倍数です)
大きな数値を3けたごとにカンマ区切りで出力2(けた数は3の倍数とは限りません)
方針
- けた数が3の倍数
- 自然数$N$を文字列として受け取ります
- 自然数$N$のけた数(バイト数)を$d$とします
- $i=1,2,...,d$について
- 自然数$N$の上から$i$けた目を出力します
- $i$が$3$の倍数かつ$i\neq d$ならば
- $i$けた目を出力した直後に
,
を出力します
- $i$けた目を出力した直後に
- 改行を出力します
- けた数は3の倍数とは限らない
- 自然数$N$を文字列として受け取ります
- 自然数$N$のけた数を$d$とします
- $i=1,2,...,d$について
- 自然数$N$の上から$i$けた目を出力します
- 未出力のけた数$d-i$が正の$3$の倍数ならば
- $i$けた目を出力した直後に
,
を出力します
- $i$けた目を出力した直後に
- 改行を出力します
但し、プログラムでは$i=0,1,...,d-1$で処理するので、ループ部分を以下のようにします。
- けた数が3の倍数
- $i=0,1,...,d-1$について
- $i$が正の$3$の倍数ならば
-
,
を出力します
-
- 自然数$N$の上から$i+1$けた目を出力します
- $i$が正の$3$の倍数ならば
- $i=0,1,...,d-1$について
- けた数は3の倍数とは限らない
- $i=0,1,...,d-1$について
- $i>0$かつ、未出力のけた数$d-i$が$3$の倍数ならば
-
,
を出力します
-
- 自然数$N$の上から$i+1$けた目を出力します
- $i>0$かつ、未出力のけた数$d-i$が$3$の倍数ならば
- $i=0,1,...,d-1$について
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++) {
if (i > 0 && i % 3 == 0) putchar(',');
putchar(n[i]);
}
return 0;
}
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++) {
if (i > 0 && (d - i) % 3 == 0) putchar(',');
putchar(n[i]);
}
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++) {
if (i > 0 && i % 3 == 0) cout << ',';
cout << n[i];
}
cout << endl;
return 0;
}
3の倍数とは限らないけた数
#include <iostream>
using namespace std;
int main() {
string n;
cin >> n;
int d = (int) n.size();
for (int i = 0; i < d; i++) {
if (i > 0 && (d - i) % 3 == 0) cout << ',';
cout << n[i];
}
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++) {
if (i > 0 && i % 3 == 0) Console.Write(',');
Console.Write(n[i]);
}
Console.WriteLine();
}
}
3の倍数とは限らないけた数
using System;
class Program
{
public static void Main()
{
string n = Console.ReadLine();
int d = n.Length;
for (int i = 0; i < d; i++) {
if (i > 0 && (d - i) % 3 == 0) Console.Write(',');
Console.Write(n[i]);
}
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++ {
if i > 0 && i % 3 == 0 {
fmt.Print(",")
}
fmt.Printf("%c", n[i])
}
fmt.Println()
}
3の倍数とは限らないけた数
package main
import "fmt"
func main() {
var n string
fmt.Scan(&n)
d := len(n)
for i := 0; i < d; i++ {
if i > 0 && (d - i) % 3 == 0 {
fmt.Print(",")
}
fmt.Printf("%c", n[i])
}
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++) {
if (i > 0 && i % 3 == 0) System.out.print(',');
System.out.print(n.charAt(i));
}
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();
for (int i = 0; i < d; i++) {
if (i > 0 && (d - i) % 3 == 0) System.out.print(',');
System.out.print(n.charAt(i));
}
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++) {
if (i > 0 && i % 3 === 0) m += ",";
m += n[i];
}
console.log(m);
3の倍数とは限らないけた数
const n = require("fs").readFileSync("/dev/stdin", "utf8").trim();
const d = n.length;
let m = "";
for (var i = 0; i < d; i++) {
if (i > 0 && (n - i) % 3 === 0) m += ",";
m += n[i];
}
console.log(m);
Kotlin
3の倍数のけた数
fun main() {
val n = readLine()!!
val d = n.length
for (i in 0 until d) {
if (i > 0 && i % 3 == 0) print(',')
print(n[i])
}
println()
}
3の倍数とは限らないけた数
fun main() {
val n = readLine()!!
val d = n.length
for (i in 0 until d) {
if (i > 0 && (d - i) % 3 == 0) print(',')
print(n[i])
}
println()
}
PHP
3の倍数のけた数
<?php
$n = trim(fgets(STDIN));
$d = strlen($n);
for ($i = 0; $i < $d; $i++) {
if ($i > 0 && $i % 3 == 0) echo ',';
echo $n[$i];
}
echo PHP_EOL;
?>
3の倍数とは限らないけた数
<?php
$n = trim(fgets(STDIN));
$d = strlen($n);
for ($i = 0; $i < $d; $i++) {
if ($i > 0 && ($d - $i) % 3 === 0) echo ',';
echo $n[$i];
}
echo PHP_EOL;
?>
Perl
3の倍数のけた数
chomp(my $n = <STDIN>);
my $d = length($n);
for (my $i = 0; $i < $d; $i++) {
if ($i > 0 && $i % 3 == 0) {
print ',';
}
print substr($n, $i, 1);
}
print $/;
3の倍数とは限らないけた数
chomp(my $n = <STDIN>);
my $d = length($n);
for (my $i = 0; $i < $d; $i++) {
if ($i > 0 && ($d - $i) % 3 == 0) {
print ',';
}
print substr($n, $i, 1);
}
print $/;
Python3
3の倍数のけた数
n = input()
d = len(n)
m = ""
for i in range(d):
if i > 0 and i % 3 == 0:
m += ','
m += n[i]
print(m)
3の倍数とは限らないけた数
n = input()
d = len(n)
m = ""
for i in range(d):
if i > 0 and (d - i) % 3 == 0:
m += ','
m += n[i]
print(m)
Ruby
3の倍数のけた数
n = gets.chomp
d = n.size
d.times do |i|
if i > 0 && i % 3 == 0
print ','
end
print n[i]
end
puts
3の倍数とは限らないけた数
n = gets.chomp
d = n.size
d.times do |i|
if i > 0 && (d - i) % 3 == 0
print ','
end
print n[i]
end
puts
Scala
3の倍数のけた数
import scala.io.StdIn._
object Main extends App{
val n = readLine()
val d = n.length
for (i <- 0 until d) {
if (i > 0 && i % 3 == 0) {
print(",")
}
print(n.charAt(i))
}
println()
}
3の倍数とは限らないけた数
import scala.io.StdIn._
object Main extends App{
val n = readLine()
val d = n.length
for (i <- 0 until d) {
if (i > 0 && (d - i) % 3 == 0) {
print(",")
}
print(n.charAt(i))
}
println()
}
Swift
3の倍数のけた数
let n = readLine()!
let d = n.count
for i in 0..<d {
if i > 0 && i % 3 == 0 {
print(",", terminator: "")
}
print(n[n.index(n.startIndex, offsetBy: i)], terminator: "")
}
3の倍数とは限らないけた数
let n = readLine()!
let d = n.count
for i in 0..<d {
if i > 0 && (d - i) % 3 == 0 {
print(",", terminator: "")
}
print(n[n.index(n.startIndex, offsetBy: i)], terminator: "")
}