优雅的点()
Posted 千彧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优雅的点()相关的知识,希望对你有一定的参考价值。
题目描述
小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
例如:半径的平方如果为25
优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。
例如:半径的平方如果为25
优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。
输入描述:
输入为一个整数,即为圆半径的平方,范围在32位int范围内。
输出描述:
输出为一个整数,即为优雅的点的个数
示例1
输入
25
输出
12
1 import java.util.Scanner; 2 3 /** 4 * 5 * 圆上且 坐标为整数 为优雅的点 由于对称 只需要计算第一象限 6 * @author Dell 7 * 8 */ 9 public class Main { 10 public static void main(String[] args) { 11 Scanner sc = new Scanner(System.in); 12 // 2 的平方 13 int r_2 = sc.nextInt(); 14 int n = 0; 15 // 坐标轴上 要么x=0要么 y=0 且 四个数中只要一个符合四个就都符合 16 // 只需要判断一个 最后跟着 四个象限乘以4 17 // 判断 范围就是 0<= x^2 < r^2 等号只取一个 18 int x = 0; 19 int y0 = 1; 20 while(x*x<r_2) { 21 double y_2 = r_2-x*x; 22 //y1 为double 类型的 y^2 开平方 23 double y1 = Math.sqrt(y_2); 24 //y0 为y1强转得到 25 y0 = (int)y1; 26 //通过判断 y0 y1是否相等 来判断 开方得到的y1是否为 整数 27 if (y0==y1) { 28 n++; 29 } 30 x++; 31 } 32 //循环完后四个象限 乘以四 33 n*=4; 34 System.out.println(n); 35 } 36 }
以上是关于优雅的点()的主要内容,如果未能解决你的问题,请参考以下文章