paizaラーニングレベルアップ問題集の「各桁の和」「カウント変数を使った計算」をやってみた。

paizaラーニングレベルアップ問題集の「各桁の和」「カウント変数を使った計算」をやってみました。
- - -
##### 問題
###### 各桁の和
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__digit_sum
###### カウント変数を使った計算
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__index_multi
- - -
##### 方針
###### 各桁の和
文字列で受け取って1桁ずつ計算する方法もあります（公式解説別解）が、今回は`while`文を使って
- $N$を$10$で割った余りを足す
- $N$を$10$で割った商に置き換える
- $N$が$0$になったら終了
という方針で解いてみたいと思います。
###### カウント変数を使った計算
```py
import numpy as np
print(*(np.arange(int(input())) + 1) * np.array(list(map(int, input().split()))), sep='\n')
```
ですが、今回は`for`文を使います。
配列要素の添字と掛ける数が1ずれることに注意しましょう。
- - -
##### C
###### 各桁の和
```c
#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	int digit_sum = 0;
	while (n) {
		digit_sum += n % 10;
		n /= 10;
	}
	printf("%d\n", digit_sum);
	return 0;
}
```
###### カウント変数を使った計算
```c
#include <stdio.h>

int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		int m;
		scanf("%d", &m);
		printf("%d\n", m * i);
	}
	return 0;
}
```
- - -
##### C++
###### 各桁の和
```cpp
#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	int digit_sum = 0;
	while (n) {
		digit_sum += n % 10;
		n /= 10;
	}
	cout << digit_sum << endl;
	return 0;
}
```
###### カウント変数を使った計算
```cpp
#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int m;
		cin >> m;
		cout << m * i << endl;
	}
	return 0;
}
```
- - -
##### C#
###### 各桁の和
```cs
using System;

class Program
{
	public static void Main()
	{
		int n = int.Parse(Console.ReadLine());
		int digit_sum = 0;
		while (n > 0) {
			digit_sum += n % 10;
			n /= 10;
		}
		Console.WriteLine(digit_sum);
	}
}
```
###### カウント変数を使った計算
```cs
using System;

class Program
{
	public static void Main()
	{
		int N = int.Parse(Console.ReadLine());
		int[] M = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
		for (int i = 1; i <= N; i++) Console.WriteLine(M[i - 1] * i);
	}
}
```
- - -
##### Go
###### 各桁の和
```go
package main
import "fmt"

func main() {
	var n int
	fmt.Scan(&n)
	digit_sum := 0
	for n > 0 {
		digit_sum += n % 10
		n /= 10
	}
	fmt.Println(digit_sum)
}
```
###### カウント変数を使った計算
```go
package main
import "fmt"

func main() {
	var n int
	fmt.Scan(&n)
	for i := 1; i <= n; i++ {
		var m int
		fmt.Scan(&m)
		fmt.Println(m * i)
	}
	var s string
	fmt.Scan(&s)
	fmt.Println(s)
}
```
- - -
##### Java
###### 各桁の和
```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 digit_sum = 0;
		while (n > 0) {
			digit_sum += n % 10;
			n /= 10;
		}
		System.out.println(digit_sum);
	}
}
```
###### カウント変数を使った計算
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 1; i <= n; i++) System.out.println(sc.nextInt() * i);
		sc.close();
	}
}
```
- - -
##### JavaScript
###### 各桁の和
```js
var n = Number(require("fs").readFileSync("/dev/stdin", "utf8"));
var digit_sum = 0;
while (n) {
	digit_sum += n % 10;
	n = parseInt(n / 10);
}
console.log(digit_sum);
```
###### カウント変数を使った計算
```js
const [N, M] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map((s, i) => i ? s.split(' ').map(Number) : Number(s));
for (var i = 1; i <= N; i++) console.log(M[i - 1] * i);
```
- - -
##### Kotlin
###### 各桁の和
```kotlin
fun main() {
	var n = readLine()!!.toInt()
	var digit_sum = 0
	while (n > 0) {
		digit_sum += n % 10
		n /= 10
	}
	println(digit_sum)
}
```
###### カウント変数を使った計算
```kotlin
fun main() {
	val n = readLine()!!.toInt()
	val M = readLine()!!.split(' ').map { it.toInt() }
	for (i in 1..n) println(M[i - 1] * i)
}
```
- - -
##### PHP
###### 各桁の和
```php
<?php
	$n = intval(fgets(STDIN));
	$digit_sum = 0;
	while ($n) {
		$digit_sum += $n % 10;
		$n = intdiv($n, 10);
	}
	echo $digit_sum, PHP_EOL;
?>
```
###### カウント変数を使った計算
```php
<?php
	$n = intval(fgets(STDIN));
	$A = array_map("intval", explode(' ', fgets(STDIN)));
	for ($i = 1; $i <= $n; $i++) echo $A[$i - 1] * $i, PHP_EOL;
?>
```
- - -
##### Perl
###### 各桁の和
```pl
my $n = int(<STDIN>);
my $digit_sum = 0;
while ($n) {
	$digit_sum += $n % 10;
	$n = int($n / 10);
}
print "$digit_sum$/";
```
###### カウント変数を使った計算
```pl
my $n = int(<STDIN>);
my @A = map { int($_) } split ' ', <STDIN>;
for (1..$n) {
	print $A[$_ - 1] * $_, $/;
}
```
- - -
##### Python3
###### 各桁の和
```py
n = int(input())
digit_sum = 0
while n:
	digit_sum += n % 10
	n //= 10
print(digit_sum)
```
###### カウント変数を使った計算
```py
n = int(input())
A = list(map(int, input().split()))
for i in range(n):
	print(A[i] * (i + 1))
```
- - -
##### Ruby
###### 各桁の和
```rb
n = gets.to_i
digit_sum = 0
while n > 0
	digit_sum += n % 10
	n /= 10
end
p digit_sum
```
###### カウント変数を使った計算
```rb
N = gets.to_i
A = gets.split.map(&:to_i)
N.times do |i|
	p A[i] * (i + 1)
end
```
- - -
##### Scala
###### 各桁の和
```scala
import scala.io.StdIn._

object Main extends App{
	var n = readInt()
	var digit_sum = 0
	while (n > 0) {
		digit_sum += n % 10
		n /= 10
	}
	println(digit_sum)
}
```
###### カウント変数を使った計算
```scala
import scala.io.StdIn._

object Main extends App{
	val n = readInt()
	val A = readLine().split(' ').map { _.toInt }
	for (i <- 1 to n) println(A(i - 1) * i)
}
```
- - -
##### Swift
###### 各桁の和
```swift
var n = Int(readLine()!)!
var digit_sum = 0
while n > 0 {
	digit_sum += n % 10
	n /= 10
}
print(digit_sum)
```
###### カウント変数を使った計算
```swift
let n = Int(readLine()!)!
var A = readLine()!.split(separator: " ").compactMap { Int($0) }
for i in 1...n {
	print(A[i - 1] * i)
}
```