前回の問題を教訓に
どちらかが0の場合は問答無用に0が最小になるので
こんな感じで書いてみました。
つまり、最初の数値を基準に、小さくなったらそれを採用するみたいな感じですね。
で、A~Bの間をループさせると。負の数が含まれていても結局あんまり関係ないなということで
こうなりました。
A,B = map(int,input().split())
result = 0
for i in range(A,B+1):
for j in range(A,B+1):
if A == 0 or B == 0:
break
if result == 0:
result = i * j
elif result > i * j:
result = i * j
print(result)
でも解答の場合は、もうちょっとロジック的に書かれていて
たとえばAが-5、Bが2だとすると
AxB=-10
-4x1-4
-3x-1=3
0x1=0
とやってみると結果的にAxBが一番最小でした。
で、どちらも正なら、A<Bが決まっているのでAxAが最小ですね。
(九九を思い浮かべればわかる)
どちらも負なら多ければ多いほど小さくなるので、BxBが最小になると。
ロジカルですね。。。ただしかなりシンプルになります。
A,B = map(int,input().split())
if A <= 0 <= B:
print(A * B)
elif A > 0:
print(A * A)
else:
print(B * B)
PHPで最初のコードを書いてみます
<?php
list($A,$B) = explode(" ",fgets(STDIN));
$result = 0;
for ($i=$A;$i<=$B;$i++){
for ($j=$A;$j<=$B;$j++){
if ($A == 0 or $B == 0){
break;
} else if($result == 0){
$result = $i * $j;
} else if($result > $i * $j){
$result = $i * $j;
}
}
}
print($result);
?>
つぎにロジカルなかつシンプルなバージョン
<?php
list($A,$B) = explode(" ",fgets(STDIN));
$result = 0;
if($A <= 0 && $B >= 0){
print($A * $B);
} else if($A >= 0 && $B >=0){
print($A * $A);
} else if ($A < 0 && $B < 0){
print($B * $B);
}
?>