[编程题] 优雅的点

小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
例如:半径的平方如果为25
优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。
输入描述:
输入为一个整数,即为圆半径的平方,范围在32位int范围内。

输出描述:
输出为一个整数,即为优雅的点的个数

输入例子:
25

输出例子:
12


java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根。特殊情况:

如果参数是NaN或小于为零,那么结果是NaN.

如果参数是正无穷大,那么结果为正无穷大.

如果参数是正零或负零,那么结果是一样的参数.

否则,其结果是最接近真正的数学平方根的参数值的double值。

以下是java.lang.Math.sqrt()方法的声明
public static double sqrt(double a)

下面的例子说明了如何使用lang.Math.sqrt()方法。

package com.yiibai;

import java.lang.*;

public class MathDemo {

public static void main(String[] args) {

  // get two double numbers numbers
  double x = 9;
  double y = 25;

  // print the square root of these doubles
  System.out.println("Math.sqrt(" + x + ")=" + Math.sqrt(x));
  System.out.println("Math.sqrt(" + y + ")=" + Math.sqrt(y));

}
}

让我们来编译和运行上面的程序,这将产生以下结果:

Math.sqrt(9)=3.0
Math.sqrt(25)=5.0


import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(getResult(n));
    }

    public static int getResult(int n){
        int res = 0;
        double r = Math.sqrt(n);
        double temp = 0;

        for(double i=0;i<r;i++){
            temp = Math.sqrt(n - i*i);
            if(temp-(int)temp==0){
                    res=res+1;
                }
            temp = 0;
        }     

        return res*4;

    }
}

注意 : double r = Math.sqrt(n);这句使得精度有缺失,应直接使用n。
答案错误:您提交的程序没有通过所有的测试用例
case通过率为50.00%

测试用例:
18

对应输出应该为:

4

你的输出为:

0
查看出错:

18
i is:0.0 4.242640687119285
i is:1.0 4.12310562561766
i is:2.0 3.741657386773941
i is:3.0 2.9999999999999996
i is:4.0 1.4142135623730938
0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值