1136 - C语言4.11
时间限制 : 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))