題目如下:
小易有一個圓心在座標原點的圓,小易知道圓的半徑的平方。小易認爲在圓上的點而且橫縱座標都是整數的點是優雅的,小易現在想尋找一個算法計算出優雅的點的個數,請你來幫幫他。
例如:半徑的平方如果爲25
優雅的點就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12個點。
<?php
function countGracePoint($n){
$count = 0;
for($x = 1;$x*$x < $n;$x++){
$y = (int)sqrt($n - $x*$x);
if($x*$x + $y*$y == $n){
$count++;
}
}
$count *= 4;//因爲存在四象限的情況,即有四種情況,
$x = (int)sqrt($n);
if($x * $x == $n) $count += 4;//某一座標爲0,也是有四種情況的
return $count;
}
echo countGracePoint(25);//12
?>