【ループメニュー2】> 【約数の列挙】STEP: 1 各桁の和 (paizaランク D 相当) [難易度: 1054 ±30]
※リンク先へ移動するためには[paiza]へのログインが必要です。
10 進数で表された整数 N が与えられます。
整数 N の各桁の和を計算し、出力してください。
入力値(例)
12345
出力値(例)
15
解答例1
1 2 3 4 5 6 7 8 9 |
<?php $n = trim(fgets(STDIN)); $count = strlen($n); $number = 0; for($i = 0; $i < $count; $i++) { $number += substr($n, $i, 1); } echo $number; ?> |
解答例2
1 2 3 4 5 |
<?php $n = trim(fgets(STDIN)); preg_match_all("/./", $n, $result); echo array_sum($result[0]); ?> |
解説
1行の入力値の整数の桁を足し算する問題。
入力値が12345なら、1+2+3+4+5=15
解答例1では、入力値nの文字数を$countに入れてループ処理します。substr()で指定した位置$iを1つずつ取り出し、$numberに足していきます。ループを抜けて$numberを出力します。
解答例2では、正規表現を使ってマッチした文字列を配列に格納し、array_sum()で合計を計算しています。
感想
解答例1のほうが素直で好きです(個人の感想です)。解答例2は1文字ずつどうやって取り出せばいいのか悩んでこねくり回してしまいました。正規表現もいつかは使えるようになりたいです。(*'ω'*)