A씨는 학교숙제로 이차방정식 문제를 풀어야 한다. 하지만 시간이 얼마 없다. 이 A씨를 도와주기 위한 이차방정식 풀이 프로그램을 작성해라.(단, 일차방정식은 ax^2 + bx + c = 0의 꼴에서 a, b와 c를 입력받아 해를 구하고 해를 구하기 위해 근의 공식을 사용해야 한다. 또, 해는 정수로 반올림한 값을 구하고 해가 없거나 여러개인 경우도 모두 구해야 한다.)
근의공식
(아래공식은 무시해도 됩니다)
114개의 풀이가 있습니다.
python으로 했습니다.
def fun(a,b,c):
D=b*b-4*a*c
if D>0:
x1=round((-b-D**0.5)/2*a)
x2=round((-b+D**0.5)/2*a)
print("x","=",x1,",",x2)
elif D==0:
x=round(-b/2*a)
print("중근입니다")
print("x","=",x)
else:
print("허근입니다")
a=int(input("a를 입력해 주세요."))
b=int(input("b를 입력해 주세요."))
c=int(input("c를 입력해 주세요."))
fun(a,b,c)
자바로 작성했는데 꽤 난잡하네요
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
System.out.print("a = ");
double a = cin.nextDouble();
System.out.print("b = ");
double b = cin.nextDouble();
System.out.print("c = ");
double c = cin.nextDouble();
Long[] root = root(a, b, c);
if(root[0].equals(null) && root[1].equals(null)) {
System.out.println("해가 없습니다.");
}else if(root[0] == root[1]) {
System.out.println("x = " + root[0] + " (중근)");
} else {
System.out.println("x = " + root[0] + "또는 x = " + root[1]);
}
cin.close();
}
public static Long[] root(double a, double b, double c) {
Long[] root = new Long[2]; //Math.round는 long타입으로 반환하기 때문에 long배열로 선언한다.
double[] droot = new double[2];
if(((b * b) - (4 * a * c)) >= 0) {
droot[0] = (-b + Math.sqrt((b * b) - (4 * a * c))) / (2 * a);
droot[1] = (-b - Math.sqrt((b * b) - (4 * a * c))) / (2 * a);
}else {
root[0] = root[1] = null;
}
root[0] = Math.round(droot[0]);
root[1] = Math.round(droot[1]);
return root;
}
# python 3.6
def solEq(a, b, c):
D = b**2 - 4*a*c # 판별식
rst = None if D <0 else \
set([round((-b + D**0.5) / (2*a)), round((-b - D**0.5) / (2*a))])
return rst
def main():
a, b, c = map(float, input("Input (a, b, c): ").split(","))
rst = solEq(a, b, c)
print("Solution:", rst)
if __name__=="__main__":
main()
print('------------------------------------------------')
print(' 2차 방정식의 근을 구해주는 프로그램 입니다 ')
print('------------------------------------------------')
print(' 기본 틀 : aX^2 + bX + c = 0 ')
print('----------------------------------------------')
a = float(input(' a의 값을 입력하십시오 : '))
b = float(input(' b의 값을 입력하십시오 : '))
c = float(input(' c의 값을 입력하십시오 : '))
print('----------------------------------------------')
import math
def discriminant(a,b,c):
def_num = b**2-4*a*c
if def_num >= 0:
fin_num = 0
else:
fin_num = 1
return fin_num
def quadratic_formula(a,b,c):
n = b**2-4*a*c
positive = (-b + math.sqrt(n))/(2*a)
negative = (-b + math.sqrt(n))/(2*a)
if positive == negative:
print('중근 입니다.')
answer = [positive]
else:
answer = [positive,negative]
return answer
if discriminant(a,b,c) == 1:
print('근이 존재하지 않습니다.')
else:
print(quadratic_formula(a,b,c))
{-# LANGUAGE QuasiQuotes #-}
import Data.Complex
import Data.List
import Data.String.Interpolate
type CD = Complex Double
roots :: (CD, CD, CD) -> [CD]
roots (a,b,c) = nub [sol id, sol negate]
where
d = b^2-4*a*c
sol f = (f (sqrt d) - b)/(2*a)
isReal = (==0) . imagPart
reals = fmap realPart . filter isReal
render :: [CD] -> IO ()
render = putStrLn . display . fmap round . reals
where
display [a,b] = [i|근: #{a}, #{b}|]
display [a] = [i|중근: #{a}|]
display [] = [i|해가 없습니다.|]
main = do
[a,b,c] <- fmap (:+0) . fmap read . words <$> getLine
render $ roots (a,b,c)
c언어입니다!
#include<stdio.h>
#include<math.h>
#include<float.h>
typedef unsigned short int UShort;
int main(int argc, char *argv[]);
void Input(double *a, double *b, double *c);
void GetAnswers(double a, double b, double c, double (*answers), UShort *count);
void Output(double (*answers), UShort count);
int main(int argc, char *argv[]) {
double a, b, c;
double answers[2];
UShort count;
Input(&a, &b, &c);
GetAnswers(a, b, c, answers, &count);
Output(answers, count);
return 0;
}
//입력을 처리하는 함수
void Input(double *a, double *b, double *c) {
puts("이차방정식은 aX^2 + bX + c = 0 의 형태로 되어 있습니다. a,b,c의 값을 입력해 주세요.");
printf("a의 값 : ");
scanf("%lf", a);
printf("b의 값 : ");
scanf("%lf", b);
printf("c의 값 : ");
scanf("%lf", c);
}
//연산 함수
void GetAnswers(double a, double b, double c, double (*answers), UShort *count) {
UShort i = 0;
double judge = pow(b, 2.0) - a * c * 4;
*count = 0;
if(fabsf(a - 0.0) <= DBL_EPSILON) {
if(fabsf(b - 0.0) <= DBL_EPSILON) {
if(fabsf(c - 0.0) <= DBL_EPSILON) {
*count = 3;
}
} else {
answers[i] = - c / b;
(*count)++;
i++;
}
} else if(judge > 0.0) {
answers[i] = (-b + sqrt(judge)) / (a * 2);
(*count)++;
i++;
answers[i] = (-b - sqrt(judge)) / (a * 2);
(*count)++;
i++;
} else if(fabsf(judge - 0.0) <= DBL_EPSILON) {
answers[i] = - b / (a * 2);
(*count)++;
i++;
}
}
//출력함수
void Output(double (*answers), UShort count) {
UShort i = 0;
if(count == 0) {
puts("해가 없습니다.");
} else if(count == 1) {
answers[i] = round(answers[i]);
printf("중근 %d를 해로 갖습니다.\n", (int)answers[i]);
} else if(count == 2) {
answers[i] = round(answers[i]);
answers[i+1] = round(answers[i+1]);
printf("두 개의 해 %d, %d를 갖습니다.\n", (int)answers[i], (int)answers[i+1]);
} else {
puts("해가 무수히 많습니다.");
}
}
import math
n = list(map(int,input("계수를 입력하시오(,로 구분) : ").split(',')))
def quadraticeq(a):
if a[0] == 0:
if a[1] == 0:
if a[2] == 0:
return "항등식입니다."
else:
return "해가 없습니다."
else:
return ("{0}로 하나의 근을 가집니다.".format(round(-a[2]/a[1])))
else:
if (a[1]*a[1]-4*a[0]*a[2]) > 0:
return (round((-a[1]+math.sqrt(a[1]*a[1]-4*a[0]*a[2]))/(2*a[0])), round((-a[1]-math.sqrt(a[1]*a[1]-4*a[0]*a[2]))/(2*a[0])))
elif (a[1]*a[1]-4*a[0]*a[2]) ==0:
return "{0}로 중근을 가진다.".format(round(-a[1]/(2*a[0])))
else:
return "{0}, {1}로 허근을 가진다.".format((complex(round(-a[1]/(2*a[0])), round(math.sqrt(-a[1]*a[1]+4*a[0]*a[2]))/(2*a[0]))), complex(round(-a[1]/(2*a[0])), round(math.sqrt(-a[1]*a[1]+4*a[0]*a[2]))/(2*a[0])))
print(quadraticeq(n))
# 파이썬
input_abc = input("blank between a b c: ")
a, b, c = map(int, input_abc.split())
pm = b*b-4*a*c
if pm < 0: print("허근")
elif pm == 0: print("중근", -b / (2*a))
else:
pm = pm**0.5
print((-b + pm) / 2*a)
print((-b - pm) / 2*a)
def sol(a,b,c):
d=(b*b)-(4*a*c)
if d<0:
ans="허근"
print (ans)
else:
ans=(round(-b-(d**0.5)/2*a)),round(-b+(d**0.5)/2*a)
if ans[0]==ans[1]:
print ("중근")
print (ans)
if __name__ == "__main__":
a,b,c=map(int, input("a,b,c>").split(","))
sol(a,b,c)
def square(a,b,c):
D=b**2-4*a*c
if D==0:print(half_up(-(b/(2*a))))
elif D>0:print([round((-b-(D**0.5))/(2*a)), round((-b+(D**0.5))/(2*a))])
else:print('실수범위에서 해가 없습니다.')
while True:
print('이 프로그램은 계수가 부동소수인 ax^2 + bx + c = 0꼴의 이차방정식의 해를 반올림하여 출력합니다.')
a=float(input('a를 입력하세요:'))
b=float(input('b를 입력하세요:'))
c=float(input('c를 입력하세요:'))
square(a,b,c)
파이썬입니다. 부동소수 자체가 부정확해서 decimal을 써야 될듯.
a=int(input("x^2의 계수를 입력하세요\n"))
b=int(input("x의 계수를 입력하세요\n"))
c=int(input("상수를 입력하세요\n"))
if b**2-(4*a*c)<0:
print("해 없음")
elif b**2-(4*a*c)==0:
print("%d"%(-b/2*a))
elif b**2-(4*a*c)>0:
x1 = (-b + (b ** 2 - 4 * a * c) ** 0.5) / (2 * a)
x2 = (-b - (b ** 2 - 4 * a * c) ** 0.5) / (2 * a)
print(x1,x2)
import math
a = int(input("TYPE 'a' in ax^2 + bx + c = 0: ")) b = int(input("TYPE 'b' in ax^2 + bx + c = 0: ")) c = int(input("TYPE 'c' in ax^2 + bx + c = 0: "))
discr = pow(b, 2) - 4ac imagdiscr = -pow(b, 2) + 4ac
if discr > 0: realsum1 = (-b + math.sqrt(discr))/(2a) realsum2 = (-b - math.sqrt(discr))/(2a) print("두 근: {0}, {1}".format(realsum1, realsum2))
if discr == 0: midsum = -b/2*a print("중근: {0}".format(midsum))
if discr < 0: imagsum1 = (-b + math.sqrt(imagdiscr)1j)/(2a) imagsum2 = (-b - math.sqrt(imagdiscr)1j)/(2a) print("허근입니다") print("허근: {0}, {1}".format(imagsum1, imagsum2))
import java.util.Scanner; public class Solution {
public static void main(String```{.java}
자바입니다! ```[] args) {
Scanner s = new Scanner (System.in);
System.out.print("a? ");
int a = s.nextInt();
System.out.print("b? ");
int b = s.nextInt();
System.out.print("c? ");
int c = s.nextInt();
System.out.println(a+"x^2+"+b+"x+"+c+" = 0");
solve(a,b,c);
}
public static void solve (int a, int b , int c){
double test=((b*b)-(4*a*c));
double res1=0;
double res2=0;
System.out.println(test);
if(test>0){
res1 = ((-b)+(Math.sqrt(test)))/(2*a) ;
res1 = Math.round(res1);
res2 = ((-b)-(Math.sqrt(test)))/(2*a) ;
res2 = Math.round(res2);
System.out.println("the answer are "+res1+","+(res2));
}
else if (test ==0){
res1 = (-b)/(2*a);
res1 = Math.round(res1);
System.out.println("the answer is "+res1);
}
else{
System.out.println("두 근은 허근입니다.");
}
}
}
from math import sqrt
def quad_eqn(a,b,c):
D = b**2-4*a*c
if D > 0:
upper = round((-b + sqrt(D))/(2*a))
lower = round((-b - sqrt(D))/(2*a))
print("두 실근은 %d, %d입니다." % (lower,upper))
elif D == 0:
print("중근: " + str(round(-b/(2*a))))
else:
print('해가 없습니다.')
#include<stdio.h.>
void main(){
int a,b,c,jud;
scanf("%d %d %d",&a,&b,&c);
jud=b*b-4*a*c;
if(jud<0){
printf("해가 없습니다.");
}
else if(jud==0){
printf("해는중근 x=%d 입니다.",b/-2);
}
else{
printf("해는두 근 x=%d 와 x=%d 입니다.",(-b+jud)/2,(-b-jud)/2);
}
}
x = lambda a, b, c: ((-b + sqrt(b**2 - 4*a*c)) / (2*a), (-b - sqrt(b**2 - 4*a*c)) / (2*a))
C++입니닷
#include<iostream>
#include<math.h>
using namespace std;
class Math
{
private:
double a, b, c, val;
public:
Math(int a1, int b1, int c1)
:a(a1), b(b1), c(c1)
{
cout << "이차함수:" << a << "X2 + " << b << "X + " << c << endl;
val = 0;
}
int findval()
{
val = b * b - 4 * a*c;
if (val > 0)
{
return 0;
}
if (val == 0)
{
return 1;
}
if (val < 0)
{
cout << "두개의 해가 있다" << endl;
return 2;
}
}
void getval()
{
if(val > 0)
cout << "해가 없다" << endl;
if(val == 0)
{
cout << "한개의 해 " << (-b/a)*0.5 << " 가 있다" << endl;
}
if (val < 0)
{
cout << "두개의 해 " << ((-b + sqrt(b*b - 4 * a*c)) / a)*0.5 << " 와 " << ((-b - sqrt(b*b - 4 * a*c)) / a)*0.5 << " 가 있다" << endl;
}
}
};
int main(void)
{
double a, b, c;
cout << "X2의 계수를 입력하세요";
cin >> a;
cout << endl;
cout << "X의 계수를 입력하세요";
cin >> b;
cout << endl;
cout << "X0의 계수를 입력하세요";
cin >> c;
cout << endl;
Math test(a, b, c);
test.findval();
test.getval();
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
void quad_eqn(double a, double b, double c);
void main(void)
{
double a, b, c;
cout << "이차방정식의 근을 구하는 프로그램입니다" << endl;
cout << "ex) ax²+ bx + c... a, b, c의 값을 입력하세요" << endl;
cout << "a값 입력 : ";
cin >> a;
cout << "b값 입력 : ";
cin >> b;
cout << "c값 입력 : ";
cin >> c;
quad_eqn(a, b, c);
}
void quad_eqn(double a, double b, double c)
{
double d, x, y;
d = b*b - 4 * a*c;
if (d>0)
{
x = (-b - sqrt(b*b - 4 * a*c)) / 2 * a;
y = (-b + sqrt(b*b - 4 * a*c)) / 2 * a;
cout << "이차방정식의 근은 " << x << " 와 " << y << " 입니다" << endl;
}
else if (d == 0)
{
x = b / (-2 * a);
cout << "이차방정식의 근은 " << x << " 입니다" << endl;
}
else
cout << "근이 없습니다" << endl;
}
print('x제곱의 계수, x의계수, 상수항의 계수를 입력하세요')
a= int(input())
b= int(input())
c= int(input())
v1 = ( b*-1 + (b**2 - 4*a*c)**0.5 )/(2*a)
v2 = -(b/a)-v1
if (type(v1)==complex) :
print('해가 없습니다')
if ((type(v1)==int) or (type(v1)==float)) :
print("첫 번째 해는 %f, 두 번째 해는 %f 입니다" % (v1 , v2))
import math
def quadratic_formula(a,b,c):
temp = b*b - 4*a*c
if temp < 0:
print("not found")
return False
elif temp == 0:
x = -b / 2*a
return [x]
else :
temp = math.sqrt(temp)
x1 = (-b + temp)/ 2*a
x2 = (-b - temp)/ 2*a
return [x1, x2]
print(quadratic_formula(1,-4,3))
c언어로 작성했어요
코딩 완전 초봅니다.
#include <stdio.h>
#include <math.h>
int main(void){
int a;
int b;
int c;
puts("이 프로그램은 이차방정식 ax^2 + bx + c 에서 a값 b값 c값을 입력받아 근을 구해주는 프로그램입니다.");
puts("먼저 a값을 입력해주시겠어요? ");
scanf("%d" , &a);
puts("b값을 입력해주세요");
scanf("%d" , &b);
puts("c값을 입력해주세요");
scanf("%d" , &c);
int a2 = a*2;
int ac4 = 4*a*c;
int B = pow(b,2);
int D; //판별식
D = B - ac4;
double root_D;
root_D = sqrt(D);
double numerator1; // 근의공식에서 분자부분 1
numerator1 = -b + root_D;
signed long answer1; // 근 1
answer1 = numerator1/a2;
double numerator2; // 근의공식에서 분자부분 2
numerator2 = -b - root_D;
signed long answer2; // 근 2
answer2 = numerator2/a2;
if(answer1 == answer2){
printf("x의 값은 %li (중근) ", answer1);
}
else{
printf("x는 %li또는 %li 입니다",answer1 , answer2);
}
return 0;
}
import java.util.Scanner;
public class sOl{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("a= ");
int a = sc.nextInt();
System.out.print("\nb= ");
int b = sc.nextInt();
System.out.print("\nc= ");
int c = sc.nextInt();
if(b*b-4*a*c < 0)
System.out.println("해가 없습니다.");
else{
int result1 = (int)(((-1)*b + Math.sqrt(b*b-4*a*c))/2/a);
int result2 = (int)(((-1)*b - Math.sqrt(b*b-4*a*c))/2/a);
if(result1 == 0 && result2 == 0)
System.out.println("해는 " + result1 + "입니다.");
else
System.out.println("해는 " + result1 + "와" + result2 + "입니다.");
}
}
}
import math
def quad(a,b,c):
o = b**2 - 4*a*c
if o > 0:
x1 = round((-b + math.sqrt(o))/2*a)
x2 = round((-b - math.sqrt(o))/2*a)
print(x1,x2)
elif o == 0:
x = round(-1*(b/2*a))
print("%d(중근)", (x))
else :
print("허근입니다")
Swift입니다.
import Foundation
func solveEquation(a: Int, b: Int, c: Int) {
let p = Double(b*b - 4*a*c)
if p < 0 {
print("Imaginary root.")
} else {
let v1 = (Double(b) * -1 + sqrt(p)) / 2 * Double(a)
if p == 0 {
print("Multiple root. \(v1)")
} else {
let v2 = (Double(b) * -1 - sqrt(p)) / 2 * Double(a)
print("\(v1), \(v2)")
}
}
}
solveEquation(a:1, b:-2, c:1)
solveEquation(a:1, b:1, c:-6)
solveEquation(a:4, b:1, c:1)
실행결과는..
Multiple root. 1.0
2.0, -3.0
Imaginary root.
// 자바
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
int c = Integer.parseInt(br.readLine());
int x = Math.round((-b + (int)Math.sqrt(b*b-4*a*c)) / 2*a);
int x2 = Math.round((-b - (int)Math.sqrt(b*b-4*a*c)) / 2*a);
if (b*b-4*a*c > 0)
System.out.println("해는 : " + x +", " + x2);
else if (b*b-4*a*c == 0)
System.out.println("중근 : " + x);
else
System.out.println("허근");
}
public static void math(int a, int b, int c)
{
int k=0;
double m=0;
double x1,x2=0;
k= (b*b)-(4*a*c);
x1 = (-b+Math.sqrt(k))/(2*a);
x2 = (-b-Math.sqrt(k))/(2*a);
if(a!=0)
{
if(k>=0)
{
System.out.println(m);
System.out.println(a+"x^2 "+b+"x "+c);
System.out.println("첫 번째 해:"+x1);
System.out.println("두 번째 해:"+x2);
}
else
{
System.out.println("해를 구할수 없습니다.");
}
}
else
{
System.out.println("이차 방정식이 아닙니다.");
}
}
x = 0
y = 0
z = 0
D = 0
def gongsik(a, b, c):
x = (b*b-4*a*c)
y = (-b + x**0.5) / 2*a
z = (-b - x**0.5) / 2*a
D = b**2 - 4*a*c
if D > 0:
print("해는 2개 %.0f, %.0f" % (y, z))
elif D < 0:
print("해는 없습니다.")
elif D == 0:
print("해는 1개 %.0f" % float(((-b/a)/2)) )
print("----------------------")
print(" ax^2 + bx + c = 0 ")
print("----------------------")
a = float(input("a 입력:"))
b = float(input("b 입력:"))
c = float(input("c 입력:"))
gongsik(a, b, c)
파이썬으로 헀습니당
def Q_F(a,b,c):
if b**2-4*a*c < 0: return False
elif b**2-4*a*c == 0: return (-b)/(2*a)
else: return (((b**2-4*a*c)**0.5-b)/(2*a),(-((b**2-4*a*c)**0.5)-b)/(2*a))
a = float(input('a: '))
b = float(input('b: '))
c = float(input('c: '))
solution = Q_F(a,b,c)
if isinstance(solution,tuple): print('{}, {}'.format(round(solution[0]),round(solution[1])))
elif isinstance(solution,float): print('{}'.format(round(solution)))
else: print(solution)
package com.company; import java.math.*; import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
getAnswer(a,b,c);
}
public static void getAnswer(double a, double b, double c)
{
if(b*b - 4*a*c > 0) // 근이2개
{
double ans_1 = (((-b + Math.sqrt(b*b - 4*a*c))/ (2*a)));
double ans_2 = (((-b - Math.sqrt(b*b - 4*a*c))/ (2*a)));
if(ans_1 > 0 && ans_2 > 0)
{
System.out.println((int)(ans_1 + 0.5) + "," + (int)(ans_2 + 0.5));
}
else if(ans_1 > 0 && ans_2 < 0)
{
System.out.println((int)(ans_1 + 0.5) + "," + (int)(ans_2 - 0.5));
}
else
{
System.out.println((int)(ans_1 - 0.5) + "," + (int)(ans_2 - 0.5));
}
}
else if(b*b - 4*a*c == 0) // 근이1개
{
double ans = (-b/2*a);
if(ans > 0)
{
System.out.println((int)(ans + 0.5));
}
else
{
System.out.println((int)(ans - 0.5));
}
}
else
{
System.out.println("노답");
}
}
}
import java.util.Scanner;
public class Javatutorial {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a, b, c, s, D;
System.out.print("a, b, c = ");
a = sc.nextDouble();
b = sc.nextDouble();
c = sc.nextDouble();
D = b * b - 4 * a * c;
if (D < 0) {
System.out.println("해가 없습니다.");
} else if (D == 0) {
System.out.println( Math.round((-1 * b) / (2 * a)) );
} else {
System.out.println( Math.round(((-1 * b) + Math.sqrt(D)) / (2 * a)));
System.out.println( Math.round(((-1 * b) - Math.sqrt(D)) / (2 * a)));
}
}
}
ax²+bx+c=0
input a
input b
input c
D=b²-4ac
If D≥0:
x=(-b±sqrt(D))÷2a
Print x
Else:
xa=-b/2a
xb=sqrt(D)/2a
Print xa+xbi
이렇게 하면 허근도 나타낼 수 있을 것 같네요.
딱히 프로그래밍 언어는 아니지만 알아 볼 수 있게(?)
def quadratic_equation(a,b,c):
D=b**2 -4*a*c
if D > 0:
d1=round((-b-D**0.5)/2*a)
d2=round((-b+D**0.5)/2*a)
print("x","=",d1,",",d2)
elif D == 0:
x=round(-b/2*a)
print("중근")
print("x","=",x)
else:
print("허근")
a=int(input("a 입력 :"))
b=int(input("b 입력 :"))
c=int(input("c 입력 :"))
if __name__ =="__main__":
quadratic_equation(a,b,c)
def abc(a,b,c):
D=b**2-4*a*c
if D==0:
print(-b/2*a)
elif D>0:
print((-b+D**0.5)/2*a, (-b-D**0.5)/2*a)
else:
print('허근이다.')
a=float(input('a:'))
b=float(input('b:'))
c=float(input('c:'))
abc(a,b,c)
import math
def calc_eq(inputs):
assert len(inputs)==3
a, b, c = inputs
#print(a, b, c)
if a == 0: return None
outputs = []
outputs.append((-b+math.sqrt(b*b-4*a*c))/(2*a))
outputs.append((-b-math.sqrt(b*b-4*a*c))/(2*a))
#print(outputs)
return outputs
from math import sqrt
a = int(input("a = "))
b = int(input("b = "))
c = int(input("c = "))
if (b*b - 4*a*c) >= 0:
if a == 0:
if b == 0:
print("there's no X")
else:
print(-(c / b))
else:
if b == 0:
if (a * c) < 0:
print(sqrt((-c)/a))
elif (a * c) == 0:
print(0)
else:
print("there's no X")
else:
x1 = (-b + sqrt(b*b - 4*a*c)) / (2 * a)
x2 = (-b - sqrt(b*b - 4*a*c)) / (2 * a)
if x1 == x2:
print(x1)
else:
print(str(x1) + ", " + str(x2))
else:
print("there's no X")
import math a=float(input("a의 값을 입력하시오:")) b=float(input("b의 값을 입력하시오:")) c=float(input("c의 값을 입력하시오:")) formul=(b2)-(4ac) if formul>0: x1=(-b2+(math.sqrt(4ac)))/2a x2=(-b2-(math.sqrt(4ac)))/2a print("x값은:%d %d" % (x1,x2)) elif formul==0: x=(-b/2*a) print("x값은:%d" % x) else : print("x값은 없습니다.")
import math
a=float(input("a의 값을 입력하시오:"))
b=float(input("b의 값을 입력하시오:"))
c=float(input("c의 값을 입력하시오:"))
formul=(b**2)-(4*a*c)
if formul>0:
x1=(-b**2+(math.sqrt(4*a*c)))/2*a
x2=(-b**2-(math.sqrt(4*a*c)))/2*a
print("x값은:%d %d" % (x1,x2))
elif formul==0:
x=(-b/2*a)
print("x값은:%d" % x)
else :
print("x값은 없습니다.")
# 이차방정식 근 구하기
def quad_equ(a,b,c) :
D = (b * b) - (4 * a * c)
import math
if D > 0 :
root1 = (-b + math.sqrt(D)) / (2 * a)
root2 = (-b - math.sqrt(D)) / (2 * a)
print("이차방정식 '%dx^2 + %dx + %d = 0'의 근은 %0.0f와 %0.0f입니다." % (a, b, c, root1, root2))
elif D == 0 :
root = -b / (2 * a)
print("이차방정식 '%dx^2 + %dx + %d = 0'의 근은 %0.0f입니다." % (a, b, c, root))
else :
print("이차방정식 '%dx^2 + %dx + %d = 0'의 근은 실수 범위 내에 존재하지 않습니다." % (a, b, c))
print("이차방정식 'ax^2 + bx + c = 0'에 대하여 'a,b,c'값 입력(단, a는 0이 아님)")
solution = quad_equ(float(input("a값을 입력하세요 : ")),float(input("b값을 입력하세요 : ")),float(input("c값을 입력하세요 : ")))
def secod():
print('ax**2 + bx + c = 0')
a = int(input('a값을 입력하세요: '))
b = int(input('b값을 입력하세요: '))
c = int(input('c값을 입력하세요: '))
s = (b*b)-(4*a*c)
if s > 0:
x1 = round((-b+s**0.5)/2*a)
x2 = round((-b-s**0.5)/2*a)
print('x','=',x1,'and',x2)
elif s == 0:
x = (-b)/2*a
print('중근입니다')
print('x = ',x)
else:
print('허근입니다')
궁금한 부분이 있는데 파이썬에서는 루트값을 표현할 수 없나요?
x2 - 6x + 4 = 0과 같은 식의 해는 정확하지 않아서요
def d(a,b,c):
d=b**2-4*a*c
return d
def solve():
if D>0:
sqrt=D**0.5
x1=(-b+sqrt)/(2*a)
x2=(-b-sqrt)/(2*a)
print('x1={:.2f},x2={:.2f}'.format(x1,x2))
elif D==0:
x=-b/(2*a)
print('x={:.2f}'.format(x))
else:
i=(abs(D))**0.5
x1=complex(-b/(2*a),i/(2*a))
x2=complex(-b/(2*a),-i/(2*a))
print('x1={:.2f},x2={:.2f}'.format(x1,x2))
a=int(input('이차항계수를 입력하시오'))
b=int(input('일차항계수를 입력하시오'))
c=int(input('상수항계수를 입력하시오'))
print('이차방정식:',a,'x^2+',b,'X+',c,'=0')
D=d(a,b,c)
solve()
import math
a,b,c = map(int,input().split())
def quadr(a,b,c):
D = (b**2) - (4*a*c)
if a == 0:
x = -c / b
else:
if D > 0:
x = (-b + math.sqrt(D)) / (2*a)
y = (-b - math.sqrt(D))/ (2*a)
return round(x),round(y)
elif D == 0:
x = -b / (2*a)
return round(x)
else:
return '해가 없습니다'
print(quadr(a,b,c))
#include <stdio.h>
#include <math.h>
int main(void)
{
double a, b, c;
double sol1, sol2;
scanf("%lf%lf%lf", &a, &b, &c);
if (b*b < 4 * a*c)
{
printf("근 없음");
}
else if (b*b > 4 * a*c)
{
sol1 = (-b + sqrt(b*b - 4 * a*c)) / 2 / a;
sol2 = (-b - sqrt(b*b - 4 * a*c)) / 2 / a;
printf("%.0lf\n", sol1);
printf("%.0lf", sol2);
}
else
{
sol1 = -b / 2 / a;
printf("%.0lf", sol1);
}
return 0;
}
a = int(input("x^2의 계수를 입력하세요 "))
b = int(input("x의 계수를 입력하세요 "))
c = int(input("상수를 입력하세요 "))
def fomula(a, b, c) :
D = b**2 - 4*a*c
if D == 0 :
x1 = round(-b / (a * 2))
print(x1)
elif D > 0 :
x2 = round(-b + (b**2 - 4*a*c)**1/2 / (2*a))
x3 = round(-b + (b**2 + 4*a*c)**1/2 / (2*a))
print(x2, x3)
else :
print("허근입니다.")
fomula(a, b, c)
파이썬입니다
import java.util.Scanner;
public class Problem156 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("ax^2+bx+c=0 꼴에서 a,b,c를 입력하시오");
double a = scan.nextDouble();
double b = scan.nextDouble();
double c = scan.nextDouble();
scan.close();
double d = b*b-4*a*c;
if(d<0)
System.out.println("해가 없음");
else if(d==0) {
double root=-b/2/a;
System.out.println("해는 "+ root +"(중근)");
}
else {
double root1=(-b+Math.sqrt(d))/2/a;
double root2=(-b-Math.sqrt(d))/2/a;
System.out.println("해는 "+root1+"과 "+root2);
}
}
}
namespace codingdojang__
{
class Program
{
static void Main(string[] args)
{
Equation(1, -5, 6);
}
static void Equation(int a, int b, int c)
{
int discriminant = b * b + -4 * a * c;
if (discriminant > 0)
{
Console.WriteLine(Math.Round((-b + Math.Sqrt(b * b + -4 * a * c)) / 2 * a));
Console.WriteLine(Math.Round((-b - Math.Sqrt(b * b + -4 * a * c)) / 2 * a));
}
else if (discriminant == 0)
{
Console.WriteLine("중근 입니다.");
Console.WriteLine((-b + Math.Sqrt(b * b + -4 * a * c)) / 2 * a);
}
else if (discriminant < 0)
{
Console.WriteLine("허근 입니다.");
}
}
}
}
비쥬얼 스튜디오 2017로 작성했습니다.
#include <stdio.h>
#include <iostream>
using namespace std;
void main() {
int a, b, c, x1, x2;
printf("a, b, c를 입력하세요 : ");
scanf("%d %d %d", &a, &b, &c);
x1 = (-b + sqrt(pow(b, 2) - (4 * a * c)))/2;
x2 = (-b - sqrt(pow(b, 2) - (4 * a * c)))/2;
if (x1 == x2) {
printf("이차방정식의 해는 %d입니다.", x1);
}
else {
printf("이차방정식의 해는 %d와 %d입니다.", x1, x2);
}
}
a,b,c= map(int,input().split())
D=b*b-4*a*c
if D>0:
print(round((-b+D**0.5)/2/a,0) , '\t' , round((-b-D**0.5)/2/a,0))
elif D==0:
print(round(-b/2/a,0))
else:
print('None')
import math
a= int(input())
b= int(input())
c= int(input())
try:
result = (-b + math.sqrt(b**2-4*a*c)) / (2*a)
result2 = (-b - math.sqrt(b**2-4*a*c)) / (2*a)
if result ==result2:
print(round(result))
else :
print(round(result), ',' ,round(result2))
except ValueError:
print("허근")
import math
def root(a, b, c):
D = b**2 - 4*a*c
if D > 0:
X1 = (-b + math.sqrt(b**2 - 4*a*c)) / 2*a
X2 = (-b - math.sqrt(b**2 - 4*a*c)) / 2*a
return int(round(X1)), int(round(X2))
elif D == 0:
X1 = (-b) / 2 * a
return int(round(X1))
a, b, c = map(int, input('각 세개의 항을 입력하시오: ').split())
print(root(a, b, c))
def abc(a,b,c):
D=b**2-4*a*c
if D==0:
print(-b/2*a)
elif D>0:
print((-b+D**0.5)/2*a, (-b-D**0.5)/2*a)
else:
print('허근이다.')
a=float(input('a:'))
b=float(input('b:'))
c=float(input('c:'))
abc(a,b,c)
파이썬 3.7 사용.
import math
print('y = ax^2 + bx + c\n')
a=[]
while(True):
tmpinp=input('a, b, c를 각각 입력하세요 (예: 1 5 20)\n')
a1=tmpinp.split(' ')
if len(a1)!=3:
print('잘못된 입력입니다. 다시 입력하세요.\n')
else:
try:
for x in a1:
a.append(float(x))
if a1[0]!=0:
break
else:
print('a에는 0이 아닌 수를 입력하세요.\n')
except:
print('잘못된 입력입니다. 다시 입력하세요.\n')
D=a[1]**2-4*a[0]*a[2] #판별식
x1='None'
x2='None'
if D<0:
print('2차 방정식 y = {}*x^2 + {}*x + {}는 실근이 없습니다.'.format(a[0],a[1],a[2]))
elif D==0:
x1=round(-1*a[1]/2/a[0]) #반올림
print('2차 방정식 y = {}*x^2 + {}*x + {}는 x={}(정수로 반올림)에서 1개의 중근을 갖습니다.'.format(a[0],a[1],a[2],x1))
else:
tmp1=-1*a[1]/2/a[0]
tmp2=math.sqrt(D)/2/a[0]
x1=round(tmp1+tmp2) #반올림
x2=round(tmp1-tmp2)
print('2차 방정식 y = {}*x^2 + {}*x + {}는 x={}, x={}(정수로 반올림)에서 2개의 실근을 갖습니다.'.format(a[0],a[1],a[2],x1,x2))
while __name__ == '__main__':
l = [*(eval(input(s)) for s in (c+' = ' for c in 'abc'))]
D = lambda a, b, c: (b**2 - 4*a*c)**(1/2)
Sol = (set((lambda a,b,c: [*(eval('(b'+k+'D(a,b,c))/(2*a)',{'a':a,'b':b,'c':c, 'D':D}) for k in '+-')])(*l)) \
if (lambda a, b, c: (b**2 - 4*a*c))(*l) >= 0 else set(['None']))
print(Sol)
파이썬 3.7.3
import math as m
a, b, c = input('Enter a, b, c : ').split()
a = float(a); b = float(b); c = float(c)
D = b**2 - 4*a*c
if D < 0 :
print('No root.')
elif D == 0 :
root = -b/(2*a)
print('Root = %d' % round(root))
else :
root1 = (-b + m.sqrt(b**2 - 4*a*c))/(2*a)
root2 = (-b - m.sqrt(b**2 - 4*a*c))/(2*a)
print('Roots = %d, %d' %(round(root1), round(root2)))
python
a, b, c = map(int, input('a, b, c 를 입력하세요 (단, a != 0) > ').split())
def solve(a, b, c):
D = b**2 - 4*a*c
if D > 0:
print(round((-b - D**0.5) / (2*a)), round((-b + D**0.5) / (2*a)))
elif D == 0:
print(-b / (2*a))
print("중근")
else:
print("근이 없습니다 (허근)")
solve(a, b, c)
a,b,c=(int(input("이차항입력:")),int(input("일차항입력:")),int(input("상수입력")))
if b**2 - 4*a*c ==0:
num= ((-1)*b)/(2*a)
print("해는 하나",num)
elif b**2>0:
num=((-1)*b + ((b**2 - 4*a*c)**0.5))/(2*a)
num2=((-1)*b - ((b**2 - 4*a*c)**0.5))/(2*a)
print("해는 두개",num,num2)
else:
print("해 없음")
a, b, c = input().split()
a = int(a); b = int(b); c = int(c)
d = ((b**2)-4*a*c)
if d > 0:
answer_1 = (-b + ((b**2) -4*a*c) ** 0.5) / 2*a
answer_2 = (-b - ((b**2) -4*a*c) ** 0.5) / 2*a
if answer_1%1 >= 0.5 or answer_2%1 >= 0.5:
answer_1+=1; answer_2+=1; answer_1 = int(answer_1); answer_2 = int(answer_2)
elif answer_1%1 < 0.5 or answer_2%1 < 0.5:
answer_1 = int(answer_1); answer_2 = int(answer_2)
print("solution1:{} solution1:{}".format(answer_1, answer_2))
elif d == 0:
answer_1 = (-b + ((b**2) - 4*a*c) ** 0.5) / 2*a
if answer_1 % 1 >= 0.5:
answer_1 += 1; answer_1 = int(answer_1)
elif answer_1%1 < 0.5:
answer_1 = int(answer_1)
print("solution:",answer_1)
else :
print("no solution")
파이썬 선배님들의 좋은 코드들이 많네요!
import math
a = int(input("a : "))
b = int(input("b : "))
c = int(input("c : "))
value = pow(b,2)-4*a*c
if value > 0 :
x1 = round((-b+(math.sqrt(value)))/2*a)
x2 = round((-b-(math.sqrt(value)))/2*a)
print("값은 {}, {}",format(x1,x2))
elif value == 0:
x1 = round(-b/2*a)
print("중근 : {}".format(x1))
else :
print("허근")
package d156_quadratic_formula;
import java.util.Scanner;
public class QuadraticFormula {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a=1,b=0,c=0;
double r1, r2;
while(a!=0) { //a에 0 입력시 종료.
a=sc.nextInt();
b=sc.nextInt();
c=sc.nextInt();
if( (b*b - 4*a*c)==0 )
System.out.println("중근: "+( -b/(2*a) ) );
else if( (b*b - 4*a*c)>0 ) {
r1 = ( -b + Math.sqrt(b*b - 4*a*c) )/(2*a);
r2 = ( -b - Math.sqrt(b*b - 4*a*c) )/(2*a);
System.out.println("실근: "+r1+" or "+r2);
}
else {
r1=-b/(2*a); //허근의 실수부분
r2=Math.sqrt( 4*a*c - b*b ); //허근의 허수부분
System.out.println("허근: "+r1+"+"+r2+"i or "+r1+"-"+r2+"i");
}
}
}
}
1 2 3
허근: -1.0+2.8284271247461903i or -1.0-2.8284271247461903i
3 4 5
허근: 0.0+6.6332495807108i or 0.0-6.6332495807108i
2 4 8
허근: -1.0+6.928203230275509i or -1.0-6.928203230275509i
2 8 4
실근: -0.5857864376269049 or -3.414213562373095
1 2 1
중근: -1
0 1 1
실근: NaN or -Infinity
파이썬 판별식을 제대로 적용하지 못한 옳지 못한 코딩
# a quadratic equation
import math
a = int(input("Input a of x^2: "))
b = int(input("Input b of x: "))
c = int(input("Input c: "))
x = (-b + (b**2 - 4 * a * c)**0.5) / (2 * a)
y = (-b - (b**2 - 4 * a * c)**0.5) / (2 * a)
print(x," ",y)
import java.util.*;
public class 이차방정식 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
if(Math.sqrt(b*b-4*a*c)==0) {
System.out.println("중근 : "+Math.round((-b/(2*a))));
}
else if(Math.sqrt(b*b-4*a*c)>0) {
System.out.print("실근 : ");
System.out.print(Math.round((-b+Math.sqrt(b*b-4*a*c))/(2*a))+", ");
System.out.println(Math.round((-b-Math.sqrt(b*b-4*a*c))/(2*a)));
}
else {
System.out.println("허근 입니다.");
}
}
}
파이썬 입니다.
import math
def root_formula(a,b,c):
d = (-b + math.sqrt((b**2)-4*a*c))/2*a
e = (-b - math.sqrt((b**2)-4*a*c))/2*a
return (f'{round(d,3)},{round(e,3)}')
root_formula(-1,3,2) # '-0.562, 3.562'
#include <math.h>
int* Quadratic_Equation(int a, int b, int c)
{
int result[2]; result[0] = 0, result[1] = 0;
int b_ac = 0;
b_ac = (b*b) - (4*a*c);
int sq_b_ac=0;
sq_b_ac = sqrt(b_ac);
if(b_ac != 0)
{
result[0] = (-b - sq_b_ac )/ (2*a);
result[1] = (-b + sq_b_ac )/ (2*a);
}
else
{
result[0] = (-b )/ (2*a);
]
return result;
}
def solution(a,b,c):
D=b*b-4*a*c
if a == 0:
return "해를 구할 수 없습니다."
else:
if D>0:
x1=round((-b-D**0.5)/2*a)
x2=round((-b+D**0.5)/2*a)
return '"x","=",x1,",",x2'
elif D==0:
x=round(-b/2*a)
return "중근입니다"
return '"x","=",x'
else:
return "허근입니다"
def qdfo(a,b,c):
if a==0:
return "a는 0보다 커야합니다."
d=(b*b)-(4*a*c)
if d>0:
x1=round((-b+(d**(1/2)))/2*a)
x2=round((-b-(d**(1/2)))/2*a)
return x1, x2
elif d==0:
x12=round(-b/2*a)
print("중근입니다.")
return x12
else:
print("허근입니다.")
파이썬 3입니다.
decimal의 Decimal을 활용했습니다
from decimal import Decimal as De
a, b, c = tuple(map(De, input('a, b, c를 공백으로 구분하여 입력:').split()))
if a == 0 and b == 0:
print('모든 x에 대해 해가 존재' * (c == 0) + '해가 존재하지 않음' * (c != 0))
elif a == 0:
print('x = {}'.format(int(-c / b + De(0.5))))
else:
D = b ** 2 - 4 * a * c
if D == 0:
print('x = {} (중근)'.format(int(-b / (De(2) * a) + De(0.5))))
elif D >= 0:
print('x = {} or {}'.format(int(-(b + D ** De(0.5)) / (De(2) * a) + De(0.5)),
int(-(b - D ** De(0.5)) / (De(2) * a) + De(0.5))))
else:
print('x = {} or {}'.format(
complex(int(-b / (De(2) * a) + De(0.5)), int((-D) ** De(0.5) / (De(2) * a) + De(0.5))),
complex(int(-b / (De(2) * a) + De(0.5)), int((-D) ** De(0.5) / (De(2) * a) + De(0.5)))))
import math
def Solution(a, b, c):
D = b ** 2 - 4 * a * c
if D > 0:
x1 = round(((0-b) + sqrt(D)) / 2 * a)
x2 = round(((0-b) - sqrt(D)) / 2 * a)
return x1, x2
elif D == 0:
x = round((0-b) / 2 * a)
return x
else:
print("허근입니다")
import math
a= int(input("a:"))
b= int(input("b:"))
c= int(input("c:"))
if (b**2) - (4*a*c) < 0 :
print (" 실근해가 없어요")
else:
x1= round((-b + math.sqrt(b**2 - (4*a*c)))/(2*a))
x2= round((-b - math.sqrt(b**2 - (4*a*c)))/(2*a))
print(x1,x2)
a = int(input()) b = int(input()) c = int(input())
A = (b2)-(4ac) if A>0: x1 = ((-b+(A0.5))/(2a)) x2 = ((-b-(A0.5))/(2a)) print(x1, x2) elif A==0: print(-b/(2*a)) else: print("X")
from math import *
def formul(a,b,c): D = b2-4ac if D<0: return '해가 없다' elif D==0: print('중근') return -b/(2*a)
else:
x1= (-b+sqrt(b**2-4*a*c))/2*a
x2= (-b-sqrt(b**2-4*a*c))/2*a
return x1,x2
a,b,c = list(map(int,input().split()))
print(formul(a,b,c))
def qe_solv(a, b, c):
if a==0:
if b==0:
return "No solution"
return [(-1*c)/b]
if b**2-4*a*c<0:
return "No real solution"
if b**2-4*a*c==0:
return [round((-1*b)/(2*a))]
if b**2-4*a*c>0:
return [round((((b**2-4*a*c)**0.5)-b)/(2*a)), round((-((b**2-4*a*c)**0.5)-b)/(2*a))]
#2차방정식 Solver by Python
#coefficient input
a = float(input('please enter a:'))
b = float(input('please enter b:'))
c = float(input('please enter c:'))
#define
D=b**2-4*a*c
r1=(-b+D**(1/2))/(2*a)
r2=(-b-D**(1/2))/(2*a)
s1=int(r1)
s2=int(r2)
#get answer
if D<0:
print("This equation has no answer")
elif D==0:
print(f'This equation has a root: s1')
else: print(f'This eqation has two real roots: {s1}, {s2}')
N = list(map(int,input("ax^2 + bx + cx = 0일때 a,b,c을 작성해주세요.").split()))
M = int((-N[1] + ((N[1]**2 -4*N[0]*N[2])**0.5))/(2*N[0]))
M2 = int((-N[1] - ((N[1]**2 -4*N[0]*N[2])**0.5))/(2*N[0]))
if N[1]**2 -4*N[0]*N[2] > 0:
print(M)
print(M2)
if N[1]**2 - 4*N[0]*N[2] == 0:
print(M)
if N[1]**2 - 4* N[0]*N[2] < 0:
print("없다")
print('이차방정식 aX^2+bX+c = 0')
a=int(input(' a : '))
b=int(input(' b : '))
c=int(input(' c : '))
import math
k=b*b-4*a*c
if k < 0:
print('해가 없음')
elif k==0:
alpa = -b/(2*a)
print('중근이고, 해는 ',alpa)
else :
alpa=(-b+math.sqrt(k))/(2*a)
beta=(-b-math.sqrt(k))/(2*a)
print('해는두개 ',alpa,'',beta)
import math
a=int(input("2차 계수 : "))
b=int(input("1차 계수 : "))
c=int(input("상수 계수 : "))
D=b**2-4*a*c
if D<0:
print("허근")
elif D==0:
print("중근 : {}".format(-b/(2*a)))
else:
one_res=(-b+math.sqrt(D))/(2*a)
two_res = (-b - math.sqrt(D)) / (2 * a)
print("실근 2개 : {} , {}".format(one_res,two_res))
public class Q155 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("a : ");
int a = scan.nextInt();
System.out.print("b : ");
int b = scan.nextInt();
System.out.print("c : ");
int c = scan.nextInt();
ArrayList<Integer> value = new ArrayList<Integer>();
try {
if(b*b-4*a*c>0) {
value.add((int)(-b+Math.sqrt(b*b-4*a*c))/(2*a));
value.add((int)(-b-Math.sqrt(b*b-4*a*c))/(2*a));
System.out.print("서로 다른 두 실근 : ");
System.out.println(value);
}
else if(b*b-4*a*c==0) {
value.add((int)(-b+Math.sqrt(b*b-4*a*c))/(2*a));
System.out.print("중근 : ");
System.out.println(value);
}
else if(b*b-4*a*c<0) System.out.println("서로 다른 두 허근 : 정수 해가 없음");
}catch(Exception e) {
System.out.println("a가 0인 2차 방정식은 없습니다.");
}
scan.close();
}
}
import math
a = int(input())
b = int(input())
c = int(input())
if b**2-4*a*c >=0:
xpos = round((-b+math.sqrt(b**2-4*a*c))/2*a)
xneg = round((-b-math.sqrt(b**2-4*a*c))/2*a)
print(xpos)
print(xneg)
else:
print("근이 없습니다")
def x_2(a,b,c):
print ('\n'+str(a)+'x^2 + '+str(b)+'x + '+str(c)+' =0')
if a==0:
print ('error (a=0)')
else:
d=b**2-4*a*c
if d>0:
print(' x1=',((-1*b)+d**0.5)/2*a,' x2=',((-1*b)-d**0.5)/2*a)
elif d==0:
print(' x(중근)=',(-1*b)/2*a)
else:
print (' 근이 없습니다 (허근)')
x_2(0,4,1)
x_2(1,0,-1)
x_2(1,4,4)
x_2(4,1,4)
Scanner scan = new Scanner(System.in);
int[] n = new int[3];
for(int i=0; i<3; i++) {
System.out.print("정수: ");
n[i] = scan.nextInt();
}
int answer1 = Math.round(-n[1]+(int)(Math.sqrt(n[1]*n[1]-(4*n[0]*n[2]))))/2;
int answer2 = Math.round(-n[1]-(int)(Math.sqrt(n[1]*n[1]-(4*n[0]*n[2]))))/2;
if(n[1]*n[1]-(4*n[0]*n[2])==0) {
System.out.printf("정답 : %d", answer1);
}else if(n[1]*n[1]-(4*n[0]*n[2])<0){
System.out.println("해가 없음");
}else {
System.out.printf("정답 : %d, %d", answer1, answer2);
}
from math import *
a,b,c=map(int,input().split())
if b**2-(4*a*c)>0:
x=round((-b+sqrt(b**2-(4*a*c))-sqrt((b**2-(4*a*c))))/(2*a))
print(x)
elif b**2-(4*a*c)==0:
x=(-b//2)
print('{0},{0}'.format(x))
else:
print('해가 존재하지 않음')
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
printf("ax^2+bx+c=0의 a,b,c를 입력해 주세요\n");
scanf("%d %d %d",&a,&b,&c);
if(pow(b,2)-4*a*c>0)
printf("%lf,%lf",(-b+sqrt(pow(b,2)-4*a*c))/(2*a),(-b-sqrt(pow(b,2)-4*a*c))/(2*a));
else if((pow(b,2)-4*a*c)==0)
printf("%lf",-b/2*a*c);
else
printf("근이 없습니다.");
return 0;
}
import math
class GetSolution:
def __init__(self):
self.sol = []
def solve2eq(self,a,b,c):
x = (-b+math.sqrt(b*b-4*a*c))/2/a
self.sol.append(x)
x = (-b-math.sqrt(b*b-4*a*c))/2/a
self.sol.append(x)
return self.sol
y = GetSolution()
x = y.solve2eq(1,4,4)
print(x)
def sol(a,b,c):
D = b**2 - 4*a*c
if D >= 0:
x1 = (-b + (b**2 - 4*a*c))/2*a
x2 = (-b - (b**2 - 4*a*c))/2*a
print('x1: {}, x2: {}'.format(int(x1), int(x2)))
else:
print("NO ANSWER")
a = int(input('INPUT a:'))
b = int(input('INPUT b:'))
c = int(input('INPUT c:'))
sol(a,b,c)
def quadratic_equ(a, b, c):
"""
find a solution x from quadratic equation with
given numbers a, b, c
ax*2 + bx + c = 0
"""
d = b*b - 4*a*c
if d > 0:
# real roots,서로다른 두개의 실근.
x1 = round((-b + d**0.5) / 2*a)
x2 = round((-b - d**0.5) / 2*a)
print("x = ", x1, " ", x2)
elif d == 0:
# multiply roots, 서로같은 실근.
x = round(-b/(2*a))
print("x = ", x)
else:
# imaginary roots, 서로다른 두개의 허근.
print("there are no real roots, it's imaginary roots.")
quadratic_equ(2, 5, 7)
quadratic_equ(12, 6, 54)
quadratic_equ(2, 25, 25)
quadratic_equ(1, 42, 88)
>>>there are no real roots, it's imaginary roots.
>>>there are no real roots, it's imaginary roots.
>>>x = -4 -46
>>>x = -2 -40
from math import *
a=int(input("2 :"))
b=int(input("1 :"))
c=int(input("0 :"))
if (b**2-4*a*c)==0:
print("answer is {0}".format(b/(2*a)))
elif (b**2-4*a*c)<=0:
print("this equation has no answer")
else:
answer=int((b-sqrt(b**2-4*a*c))/(2*a))
answer2=int((b+sqrt(b**2-4*a*c))/(2*a))
print("answer is {0}, {1}".format(answer,answer2))
c++
#include <iostream>
#include <math.h>
using namespace std;
int main() {
ios::sync_with_stdio();
int a, b, c;
cin >> a >> b >> c;
if ((pow(b, 2) - (4 * a * c)) > 0) {
cout << (int)((-b + sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)) << endl << (int)((-b - sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)) << endl;
}
else if ((pow(b, 2) - (4 * a * c)) == 0) {
cout << (int)((-b + sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)) << endl;
}
else if ((pow(b, 2) - (4 * a * c)) < 0) {
cout << "없다" << endl;
}
return 0;
}
c language
#include <stdio.h>
#include <math.h>
using namespace std;
int main() {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if ((pow(b, 2) - (4 * a * c)) > 0) {
printf("%d \n%d \n", (int)((-b + sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)), (int)((-b - sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)));
}
else if ((pow(b, 2) - (4 * a * c)) == 0) {
printf("%d\n", (int)((-b + sqrt(pow(b, 2) - (4 * a * c))) / (2 * a)));
}
else if ((pow(b, 2) - (4 * a * c)) < 0) {
printf("없다");
}
return 0;
}
a = int(input("0이 아닌 a의 값을 입력하세요:"))
b = int(input("b의 값을 입력하세요:"))
c = int(input("c의 값을 입력하세요:"))
judge = int(b ** 2 - 4 * a * c)
print(judge)
if judge == 0:
print("x의 값은 {}입니다.(중근)".format(round(-0.5 * b / a))
elif judge < 0:
print("해가 존재하지 않습니다.")
elif judge > 0:
print("x의 값은 {}, {}입니다.".format(round((-b + judge) / (2 * a)),round((-b - judge) / (2 * a))))
def main():
from math import sqrt
a = 1
b = 12
c = 3
temp = b**2-4*a*c
if temp < 0:
print('No root of x')
else:
if temp == 0:
x1 = -b/(2*a)
x2 = x1
elif temp > 0:
x1 = (-b+sqrt(temp))/(2*a)
x2 = (-b-sqrt(temp))/(2*a)
x1 = round(x1)
x2 = round(x2)
print(x1,x2)
return(x1,x2)
if __name__ == '__main__':
main()
[a, b, c] = list(map(float, input("ax^2 + bx + c = 0: ").split(', ')))
x_0 = (-b +(b**2 - 4*a*c)**0.5)/(2*a)
x_1 = (-b -(b**2 - 4*a*c)**0.5)/(2*a)
try:
x_0 = round(x_0)
x_1 = round(x_1)
if x_0 == x_1 :
print(f'답은 중근 {x_0}')
else:
print(f'답은 {x_0}, {x_1}')
except:
print('답은 허근')
import math
def f(a, b, c):
d = b*b - 4*a*c
if d > 0:
x = round((-b+math.sqrt(d)/(2*a))
y= round((-b-math.sqrt(d)/(2*a))
print('x = {}, {}'.format(x, y))
if d = 0:
x = round((-b+math.sqrt(d)/(2*a))
print('x = {} (중근)'.format(x))
else:
print('허근')
a, b, c = map(int, input('a, b, c = '))
def f(a, b, c)
a=int(input('a입력'))
b=int(input('b입력'))
c=int(input('c입력'))
D = b**2 - 4*a*c
if D > 0 :
x1 = round((-b + D**0.5)/2*a)
x2 = round((-b - D**0.5)/2*a)
print(x1,x2)
if D == 0 :
x = round(-b/2*a)
print(x)
if D < 0 :
print('없음')
몇 년 전 수능볼 때 근의 공식을 쓴 것이 마지막이라 다른 분들의 답과 구글링 하면서 문제를 풀었네요. 비단 근의 공식 뿐 아니라 판별식도 알아야지 풀 수 있는 문제인 것 같아요. 아무래도 알고리즘 짜는 능력보단 근의 공식과 판별식을 파이썬으로 잘 구현해낼 수 있는지를 보는 문제인 것 같습니다.
from math import*
def quadratic(a, b, c):
if (b**2-4*a*c)>0:
return round((-b+sqrt(b**2-4*a*c))/2*a),round((-b-sqrt(b**2-4*a*c))/2*a)
elif (b**2-4*a*c) == 0:
return round((-b)/2*a)
else :
pass
python 3.9.5입니다. 먼저 판별식 D를 구하고, D의 부호로 근의 개수를 정하는 방식을 사용하였습니다.
a = int(input('이차항의 계수를 입력하세요. '))
b = int(input('일차항의 계수를 입력하세요. '))
c = int(input('상수항의 계수를 입력하세요. '))
d = b**2 - 4*a*c
if d < 0:
print('허근입니다.')
elif d == 0:
print('중근입니다.')
print(int((-b + d ** 0.5) / (2*a)))
else:
print('실근입니다.')
print(int((-b + d ** 0.5) / (2*a)), end=' ')
print(int((-b - d ** 0.5) / (2*a)))
실행 결과입니다.
이차항의 계수를 입력하세요. 1
일차항의 계수를 입력하세요. 4
상수항의 계수를 입력하세요. 3
실근입니다.
-1 -3
import math
def func():
a = int(input("이차항 계수 : "))
b = int(input("일차항 계수 : "))
c = int(input("상수항 계수 : "))
D = b * b - 4 * a * c
print("{}x^2 + {}x + {} = 0".format(a, b, c))
if D > 0:
print("서로 다른 두 실근")
x_1 = int((-b + math.sqrt(D)) / (2 * a))
x_2 = int((-b - math.sqrt(D)) / (2 * a))
return "x_1 = {}, x_2 = {}".format(x_1, x_2)
elif D == 0:
print("중근")
x = int(-b / (2 * a))
return "x = {}".format(x)
elif D < 0:
return "해가 없습니다."
print(func())
#codingdojing_quadratic equation
#근의 공식의 일반식 하나로 통일
#근이 없는 경우, 1개인 경우 2개인 경우
from math import *
def quadraticEquation(a, b, c):
#ax2+bx+c = 0
root = b**2 - 4*a*c
if root < 0:
print("no root")
elif root == 0:
print("root = ", -b/2*a)
else:
print("root = ", round((-b + sqrt(root))/2*a), round((-b - sqrt(root))/2*a))
quadraticEquation(2, 10, 3)
파이썬 3.8.10으로 작성되었습니다. 근이 정수이기 때문에 판별식<0 인 경우는 그냥 값이 없다고 출력 합니다.
import math
# 이차방정식 풀이 프로그램
def get_quardratic():
a, b, c = map(int, input("3개 정수를 입력").split())
D = b**2 - 4*a*c
if D > 0:
answer = [round((-b + math.sqrt(D))/2*a),
round((-b - math.sqrt(D))/2*a)]
elif D == 0:
answer = int(-b / (2*a))
else:
print("No answer")
print("근의 공식의 해 : ", answer)
if __name__ == '__main__':
get_quardratic()
a = int(input("a = "))
b = int(input("b = "))
c = int(input("c = "))
D = b**2 - 4*a*c
if D < 0:
print("해 없음")
elif D == 0:
print((-b + D) / 2*a)
else:
print("1 : {}\n2 : {}".format((-b + D) / 2*a, (-b - D) / 2*a))
def func(a,b,c):
D=b**2 - 4*a*c
if D>0:
x1=round((-b -D**0.5) /2*a)
x2=round((-b + D**0.5)/2*a)
print('x = %d, %d'%(x1,x2))
elif D==0:
x=round(-b/2*a)
print('x= %d(중근)'%x)
else:
print('허근')
a=int(input('a를 입력하세요. '))
b=int(input('b를 입력하세요. '))
c=int(input('c를 입력하세요. '))
func(a,b,c)
a,b,c=int(input("a: ")),int(input("b: ")),int(input("c: "))
D=b**2-4*a*c
print("{0}, {1} 서로 다른 두 실근입니다.".format(round((-b+D**0.5)/(2*a)),round((-b-D**0.5)/(2*a)))) if D>0 else print("{0} 중근입니다.".format(round(-b/(2*a)))) if D>=0 else print("실근이 없습니다.")
static void quadraticEquation(double... x) {
double a, b, c, result1, result2;
a = (2 * x[0]);
b = x[1];
c = x[2];
b = -(b);
if ((x[1] * x[1]) - (4 * x[0] * x[2]) > 0) {
c = (x[1] * x[1]) - (4 * x[0] * x[2]);
} else {
System.out.println("해가 없습니다.");
return;
}
c = Math.sqrt(c);
result1 = b / a + c / a;
result2 = b / a - c / a;
System.out.println(result1 + " 이거나 " + result2);
}
public static void main(String[] args) {
quadraticEquation(1, 4, -21);
}
a, b, c = map(int,input().split())
result1 = ( -1*b + ( b**2 - 4*a*c )**0.5 ) / 2 * a
result2 = ( -1*b - ( b**2 - 4*a*c )**0.5 ) / 2 * a
print(-result1,-result2)
import math
a= int(input("a를 입력하시오"))
b= int(input("b를 입력하시오"))
c= int(input("c를 입력하시오"))
def solution (a,b,c) :
x=0
sol = []
x1 = math.ceil(float((-b+math.sqrt((b**2-4*a*c)))/2*a))
x2 = math.ceil(float((-b-math.sqrt((b**2-4*a*c)))/2*a))
sol.append(x1)
sol.append(x2)
print(set(sol))
solution(a,b,c)
import math
def quadfun(a, b, c):
return (int((round((-b + math.sqrt(b**2 - 4*a*c))/2*a, 1))), int((round((-b - math.sqrt(b**2 - 4*a*c))/2*a, 1))))
import math
print("ax^2 + bx + c = 0 의 해를 구하세요.")
A = int(input("Enter a: "))
B = int(input("Enter b: "))
C = int(input("Enter c: "))
def count_root(a, b, c):
X = (b**2) - 4*a*c
if X > 0:
M = (-b + math.sqrt((b**2) - 4*a*c)) / 2*a
N = (-b - math.sqrt((b**2) - 4*a*c)) / 2*a
return "이 식의 해는 " + str(round(M)) + " 와/과 " + str(round(N)) + " 입니다."
elif X == 0:
M = (-b + math.sqrt((b**2) - 4*a*c)) / 2*a
return "이 식의 해는 " + str(round(M)) + " 입니다."
elif X < 0:
return "이 식의 해는 허근입니다."
print(count_root(A, B, C))
a = int(input("Enter the coefficients of a: "))
b = int(input("Enter the coefficients of b: "))
c = int(input("Enter the coefficients of c: "))
d = b**2-4*a*c # discriminant
if d < 0:
print ("This equation has no real solution")
elif d == 0:
x = (-b+math.sqrt(b**2-4*a*c))/2*a
print ("This equation has one solutions: "), x
else:
x1 = round((-b+math.sqrt((b**2)-(4*(a*c))))/(2*a))
x2 = round((-b-math.sqrt((b**2)-(4*(a*c))))/(2*a))
print ("This equation has two solutions: ", x1, " or", x2)
파이썬입니다.
def abc(a,b,c):
D = b*b-4*a*c
if D < 0: return print('허근')
x1 = round((-b+D**0.5)/(2*a))
x2 = round((-b-D**0.5)/(2*a))
if D > 0 :
return x1, x2
else:
print("중근")
return x1
import math as m
print("이차방정식 ax^2 + bx + c = 0 의 해를 구합니다. 해는 정수로 반올림합니다.")
ui = list(map(int, input("이차방정식의 계수를 차례대로 입력(공백으로 구분)>> ").split()))
a = ui[0]
b = ui[1]
c = ui[2]
D = b**2 - 4*a*c
if a==0 and b==0:
print("해가 없음")
elif a==0 and b!=0:
x = -c/b
print("x = %.f (중근)" % x)
elif a!=0 and D>0:
x1 = (-b + m.sqrt(D)) / (2*a)
x2 = (-b - m.sqrt(D)) / (2*a)
print("x = %.f, %.f" % (x1, x2))
elif a!=0 and D==0:
x3 = -b/(2*a)
print("x = %.f" % x3)
elif a!=0 and D<0:
print("실수해가 존재하지 않음")
파이썬 3.8.5
a = int(input("a를 입력하세요. : "))
b = int(input("b를 입력하세요. : "))
c = int(input("c를 입력하세요. : "))
D = b*b-4*a*c
if D > 0 :
print ( int(round( (-b + D**0.5) / 2*a ,0 )), int(round( (-b - D**0.5) / 2*a, 0 ) ) )
elif D == 0 :
print(int(round( -b/2*a,0)) )
else :
print ( " 해가 없음 ")
python
import numpy as np
equ = input("이차방정식을 입력하시오: ").split('+')
# equ = ax^2+bx+c
a = int(equ[0][:-3])
b = int(equ[1][:-1])
c = int(equ[2])
if b**2-4*a*c < 0:
print('해가 없습니다.')
else:
x1 = (-b+np.sqrt(b**2-4*a*c))/(2*a)
print(round(x1))
x2 = (-b-np.sqrt(b**2-4*a*c))/(2*a)
print(round(x2))
파이썬
import math
user_a = int(input())
user_b = int(input())
user_c = int(input())
panbyeol = (user_b ** 2) - 4 * user_a * user_c # 판별식
sqrt= math.sqrt(panbyeol) # 판별식 루트
if panbyeol < 0 :
print("해가 존재 하지 않음")
else :
result_plus = (-user_b + sqrt) / (2 * user_a)
result_minus = (-user_b - sqrt) / (2 * user_a)
print(result_plus, result_minus)
def QuadraticFormula(a, b, c):
x1 = (-b + (b**2 - 4*a*c) ** 1/2) / 2*a
x2 = (-b - (b**2 - 4*a*c) ** 1/2) / 2*a
if b**2 - 4*a*c == 0 :
return x1
elif b**2 - 4*a*c < 0:
return '해가 존재하지 않습니다.'
else:
return round(x1), round(x2)
print(QuadraticFormula(int(input()), int(input()), int(input())))
python
a,b,c = map(int,input("Enter A B C:").split())
if b**2 - 4 * a * c >=0:
print("X=",(int(round((-b+(b**2-4*a*c)**0.5)/(2*a)))))
print("X=",(int(round((-b-(b**2-4*a*c)**0.5)/(2*a)))))
else:
print("Imaginary")
def quadratic(a,b,c):
if (b ** 2 - 4 * a * c) >= 0 :
x = ( - b - (b ** 2 - 4 * a * c) ** 1/2 ) / ( 2 * a )
y = ( - b + (b ** 2 - 4 * a * c) ** 1/2 ) / ( 2 * a )
if x == y :
print(round(x,0))
else :
print(round(x,0), round(y,0))
else :
print("해 없음")
import cmath
a = int(input("a 숫자를 입력하시오: "))
b = int(input("b 숫자를 입력하시오: "))
c = int(input("c 숫자를 입력하시오: "))
if a == 0:
if b == 0:
if c == 0:
print("해가 무한개입니다.")
else:
print("해가 없습니다.")
else:
x = -c / b
print(round(x))
else:
D = b*b - 4*a*c
sqrtD = cmath.sqrt(D)
x1 = (-b + sqrtD) / (2*a)
x2 = (-b - sqrtD) / (2*a)
def round_root(z):
if abs(z.imag) < 1e-12:
return round(z.real)
return complex(round(z.real), round(z.imag))
r1 = round_root(x1)
r2 = round_root(x2)
if r1 == r2:
print(r1)
else:
print(r1, r2)
import math
import re
data = input('Enter: ').replace(' ', '')
a = int(re.search(r'([+-]?\d+)(?=x\^2)', data).group())
b = int(re.search(r'([+-]?\d+)(?=x(?!\^))', data).group())
c = int(re.search(r'([+-]?\d+)$', data).group())
D = b**2 - 4*a*c
if D > 0:
x1 = round((-b + math.sqrt(D)) / (2 * a))
x2 = round((-b - math.sqrt(D)) / (2 * a))
print(f'x1 = {x1}, x2 = {x2}')
elif D == 0:
x = -b / (2 * a)
print(f'x = {x}')
else:
print('No real roots')