列表

详情


NC16514. 范围(range)

描述

已知均为实数,且满足:

给定A,B,求x的取值范围

由于Apojacsleam的计算几何往往被精度卡飞,所以他痛恨精度错误,于是给定的A,B都是正整数
请注意:题目中给的指的是仅为某些可以取任何值的变量名,与x没有任何关系

输入描述

输入数据共一行,两个正整数A,B,意义如“题目描述”。

输出描述

输出一行描述答案:

若有解,输出多个实数(至少两个),从小到大输出,保留两位小数,表示X的取值范围的端点,无解输出”No Answer.”(不含引号)

注:如果端点有两个,以下四种情况的答案都是L,R:
请注意,如果L=R,则需要输出两次

示例1

输入:

3 5

输出:

1.00 2.00

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 3ms, 内存消耗: 400K, 提交时间: 2019-08-13 21:25:54

#include<math.h>
#include<stdio.h>
int main(void)
{
    double a,b;
    scanf("%lf%lf",&a,&b);
    double tmp=sqrt(2.0*b-a*a);
    printf("%.2f %.2f\n",a/2-tmp/2,a/2+tmp/2);
    return 0;
}

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 492K, 提交时间: 2018-07-22 22:39:24

#include <bits/stdc++.h>
using namespace std;
double a, b;
int main() {
	cin >> a >> b;
	double dt = sqrt(2 * b - a * a);
	printf("%.2f %.2f\n", (a - dt) / 2, (a + dt) / 2);
	return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 500K, 提交时间: 2020-02-15 12:22:30

#include<stdio.h>
#include<math.h>
int a,b;
int main()
{
	scanf("%d%d",&a,&b);
	printf("%.2lf %.2lf",(a-sqrt(2*b-a*a))/2,(a+sqrt(2*b-a*a))/2);
	return 0;
}

上一题