另类单位圆

目录

题目描述:

输入格式:

输出格式:

输入样例:

输出样例:

限制:

题目链接:

代码思路:


题目描述:

对于二维平面上的一个点,记其坐标为 (x,y)。通常当我们说到“单位圆”的时候,默认是指到原点 (0,0) 的欧氏距离(即 x2+y2​)为 1 的所有点构成的曲线。现在考虑“距离”的另一种定义,令 (x,y) 到原点 (0,0) 的另类距离为 ∣x2−xy−y2∣,则在这个另类距离下的单位圆就在二维平面上形成了另外形状的曲线。
本题给定一个正整数区间 [a,b],求正整数坐标 (x,y)∈[a,b]×[a,b] 范围内,另类单位圆上到原点 (0,0) 的欧氏距离最小和最大的点坐标。

输入格式:

输入在一行中给出闭区间的两个端点,即正整数 a 和 b(1≤a≤b≤10000)。

输出格式:

第一行输出到原点 (0,0) 的欧氏距离最小的点坐标,第二行输出到原点 (0,0) 的欧氏距离最大的点坐标。格式均为 (x, y)
题目保证解存在且唯一。

输入样例:

10 1000

输出样例:

(21, 13)
(987, 610)

限制:

代码长度限制     16 KB

时间限制     400 ms

内存限制     64 MB

题目链接:

题目目前还没到各大网站公布,可以到这里面看看

程序设计类实验辅助教学平台https://pintia.cn/home

代码思路:

题目有点绕,看不懂题目的化,那就看代码注释,相信同志你肯定可以看懂.

import java.util.Scanner;

public class lx1 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		// 根据题意 x和y的范围是[a,b];
		int a = scanner.nextInt();
		int b = scanner.nextInt();
		// 把要求的 最大坐标 由最小的a赋值 让后面好操作
		int max = a;
		int max1 = a;
		// 把要求的 最小坐标 由最大的b赋值 让后面操作顺利
		int min = b;
		int min1 = b;
		// 由于题目时间充足 所以两个for循环解决 完全没问题
		// 两个for循环的作用是 找到所有的坐标值 然后找出最大的坐标 和 最小的坐标
		for (int i = a; i <= b; i++) {
			for (int j = a; j <= b; j++) {
				// 由题意可知 i * i - i * j - j * j == 1 | i * i - i * j - j * j == -1时 i和j才是
				// 另类单位圆的坐标
				if (i * i - i * j - j * j == 1 | i * i - i * j - j * j == -1) {
					// 找最大值 坐标 注意:坐标的x和y是一对 是要同时改变的
					if (max1 <= i & max <= j) {
						max1 = i;
						max = j;
					}
					// 找最小值 坐标 注意:坐标的x和y是一对 是要同时改变的
					if (min1 >= i & min >= j) {
						min1 = i;
						min = j;
					}
				}
			}

		}

		System.out.println("(" + min1 + ", " + min + ")");
		System.out.println("(" + max1 + ", " + max + ")");
	}
}

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值