網易2017校招編程:優雅的點(PHP版本)

題目如下:

小易有一個圓心在座標原點的圓,小易知道圓的半徑的平方。小易認爲在圓上的點而且橫縱座標都是整數的點是優雅的,小易現在想尋找一個算法計算出優雅的點的個數,請你來幫幫他。 
例如:半徑的平方如果爲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

?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章