【文字列処理メニュー】> 巨大な数のかけ算 (paizaランク C 相当) [難易度: 1465 ±15]
※リンク先へ移動するためには[paiza]へのログインが必要です。
数値を表す文字列 S と 1 桁の数値 T が与えられるので、S * T の結果を表す文字列を出力してください。
入力値(例)
987654321
9
出力値(例)
8888888889
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $s = trim(fgets(STDIN)); $t = trim(fgets(STDIN)); $len = mb_strlen($s); $x = 0; for($i = 0; $i < $len; $i++) { $c = $s[$len - 1 - $i] * $t + $x; if(mb_strlen($c) == 2) { $x = substr($c, 0, 1); $ans[] = substr($c, 1, 1); } else { $ans[] = $c; $x = 0; } } if($x != 0) { $ans[] = $x; } $rev_ans = array_reverse($ans); if($t == 0) { echo $t; } else { foreach($rev_ans as $value) { echo $value; } } ?> |