phpの質問です
<?php
list($a,$b)=explode(" ",fgets(STDIN));
for($c=$b;$c<($a+$b);$c++){
}
?>
を実行するとtime limit exceededと出ます なぜでしょうか?
ちなみに入力は
6 3
3 2
1 6
です
を実行するとtime limit exceededと出ます なぜでしょうか?
- explode で標準入力をばらした $a、$b の型は文字列
- デリミタは空白なので、$b の末尾には改行文字が入ってる
- php の ++ 単項演算子は、文字列にも適用できるのでエラーにならない
- ++ が対応しているのはASCII 文字と数字 (a-z、A-Z、そして 0-9) のみがサポートされ、それ以外の文字が入ってると元の文字列は変更されない
- $c は、文字列 "3\n" のまま変わらないので無限ループ
- 実行時間を使い果たして time limit exceeded
きっと、数字としてループさせたいと思うので、intval 関数を使って数値に変換すれば良いと思います。
<?php
list($a,$b)=explode(" ",fgets(STDIN));
$a = intval($a); // ★文字列を数値に変換
$b = intval($b); // ★こっちも
for($c=$b;$c<($a+$b);$c++){
var_dump($c);
...
}
?>