NC16514. 范围(range)
描述
已知与均为实数,且满足:
给定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; }