1136 - C语言4.11

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

求方程式ax2+bx+c=0的实根。

题目输入

三个用空格隔开的整数a、b、c,保证a不为0,且b2-4ac>0。

题目输出

输出方程式ax2+bx+c=0的两个实根。所有的实数输出请使用C语言的默认舍入方式保留4位小数,注意行尾输出换行。

输入/输出样例

输入格式

1 3 2

输出格式

-2.0000 -1.0000

C语言解答

#include<stdio.h>
int main(){int a,b,c;
	int disc;
	double p1,p2;
	scanf("%d %d %d",&a,&b,&c);
	if(a!=0){
		disc=b*b-4*a*c;
		p1=-b/(2.0*a);
			p2=sqrt(disc)/(2.0*a);
			printf("%.4lf %.4lf\n",p1-p2,p1+p2);
		}
return 0;}

C++解答

#include <stdio.h>
#include <math.h>
int main() {
	int a, b, c, delta;
	double ans0, ans1, sqrt_delta;
	scanf("%d %d %d", &a, &b, &c);
	/* 计算delta的值(b*b-4*a*c) */
	delta = b * b - 4 * a * c;
	sqrt_delta = sqrt(delta);
	ans0 = (-b - sqrt_delta) / (2.0 * a);
	ans1 = (-b + sqrt_delta) / (2.0 * a);
	printf("%.4f %.4f\n", ans0, ans1);
	return 0;
}

Java解答

import java.util.*;
public class Main {
	public static void main(String args[]) {
		Scanner cin = new Scanner(System.in);
		double a,b,c;
		double d;
		double x1,x2;
		a=cin.nextInt();
		b=cin.nextInt();
		c=cin.nextInt();
		d=Math.pow(b, 2)-4*a*c;
		if(d==0){
			x1=-b/(2*a);
			System.out.printf("%.4f\n",x1);
		}
		else if(d>0){
			x1=(-b+Math.sqrt(d))/(2*a);
			x2=(-b-Math.sqrt(d))/(2*a);
			System.out.printf("%.4f %.4f\n",x2,x1);
		}
		else {
			System.out.println("no answer");
		}
	}
}

Python解答

from math import sqrt
a,b,c = [float(x) for x in raw_input().split()]
print "%.4f %.4f" %((-b-sqrt(b*b-4*a*c))/(2*a), (-b+sqrt(b*b-4*a*c))/(2*a))