예시 input
1 4 5
예시 output
-2 + i, -2 - i
복소수.real은 복소수의 실수 부분을, 복소수.imag는 허수 부분을 반환하는 것을 사용했습니다.
a, b, c = map(int, input().split())
D=b**2-4*a*c
if D>0:
print('실근: {0:.0f}, {1:.0f}'.format((-b+D**0.5)/(2*a),(-b-D**0.5)/(2*a)))
elif D==0:
print('중근: {:.0f}'.format(-b/(2*a)))
else:
A=(-b+D**0.5)/(2*a)
if A.imag==1:
AA='{:.0f}+i'.format(A.real)
BB='{:.0f}-i'.format(A.real)
else:
AA='{0:.0f}+{1:.0f}i'.format(A.real,A.imag)
BB='{0:.0f}-{1:.0f}i'.format(A.real,A.imag)
print('허근: ', AA, BB,)
import math
Nlist = list(map(int,input().split()))
icheck = 1 if (Nlist[1]**2 - 4*Nlist[0] * Nlist[2]<0) else 0
N1 = -Nlist[1]/2 if (Nlist[1]%2 == 0) else -Nlist[1]
N2 = math.sqrt(abs((Nlist[1]/2)**2 - (Nlist[0]*Nlist[2]))) if (Nlist[1]%2 == 0) else math.sqrt(abs((Nlist[1]**2) - (4*Nlist[0]*Nlist[2])))
if (icheck == 0):
print(N1+N2,'\n',N1-N2) if (N1+N2 != N1-N2) else print(N1+N2)
else:
print(f"{N1} + {N2} i")
print(f"{N1} - {N2} i")
2021年08月18日 14:27
C#
using System;
using System.Numerics;
namespace 허근까지
{
class Program
{
static void Main()
{
var solution = new QuadraticEquation(1, 4, 5);
Console.WriteLine(solution);
}
}
class QuadraticEquation
{
private readonly double quadraticCoeff, linearCoeff, constantCoeff;
public QuadraticEquation(double quadraticCoeff, double linearCoeff, double constantCoeff)
{
this.quadraticCoeff = quadraticCoeff; // 2차항 계수
this.linearCoeff = linearCoeff; // 1차항 계수
this.constantCoeff = constantCoeff; // 상수항 계수
this.Discriminant = Math.Pow(linearCoeff, 2.0) - 4.0 * this.quadraticCoeff * this.constantCoeff;
}
// 판별식
public double Discriminant { get; }
// 해를 문자열 표현으로 반환
public override string ToString()
{
Complex solution1 = (-linearCoeff + Complex.Sqrt(Discriminant)) / (2.0 * quadraticCoeff);
Complex solution2 = (-linearCoeff - Complex.Sqrt(Discriminant)) / (2.0 * quadraticCoeff);
string expression1 = Complex2Expression(solution1);
string expression2 = Complex2Expression(solution2);
return Discriminant == 0 ? $"{expression1}" : $"{expression1}, {expression2}";
}
// 복소수 클래스를 문자열 표현으로 변환
private static string Complex2Expression(Complex complex)
{
// 해의 정수 반올림
int realValue = (int)Math.Round(complex.Real);
int imagValue = (int)Math.Round(complex.Imaginary);
// 해를 경우따른 문자열로 표현
string first = realValue != 0 ? $"{realValue}" : "";
string sign = imagValue < 0 ? "-" : "+";
string second = Math.Abs(imagValue) != 1 ? $"{Math.Abs(imagValue)}i" : "i";
if (imagValue == 0)
{
second = string.Empty;
sign = string.Empty;
}
string expression = $"{first}{sign}{second}";
if (expression == "")
{
expression = "0";
}
return expression;
}
}
}
근의 공식을 적용시켰습니다. 허근의 경우에는 sqrt(-x) = sqrt(x) * i 임을 이용했습니다.
a = int(input('이차항의 계수를 입력하세요. '))
b = int(input('일차항의 계수를 입력하세요. '))
c = int(input('상수항의 계수를 입력하세요. '))
d = b**2 - 4*a*c
if d < 0:
real = round(-b / (2*a))
imag = round((abs(d) ** 0.5) / (2*a))
if real:
if imag == 1: print(f'{real} + i, {real} - i')
else: print(f'{real} + {imag}i, {real} - {imag}i')
else:
if imag == 1: print('i, -i')
else: print(f'{imag}i, -{imag}i')
elif d == 0:
print(round((-b + d ** 0.5) / (2*a)))
else:
print(round((-b + d ** 0.5) / (2*a)), end=', ')
print(round((-b - d ** 0.5) / (2*a)))
실행 결과입니다.
이차항의 계수를 입력하세요. 1
일차항의 계수를 입력하세요. 4
상수항의 계수를 입력하세요. 3
-1, -3
이차항의 계수를 입력하세요. 1
일차항의 계수를 입력하세요. 4
상수항의 계수를 입력하세요. 4
-2
이차항의 계수를 입력하세요. 1
일차항의 계수를 입력하세요. 4
상수항의 계수를 입력하세요. 5
-2 + i, -2 - i
import math
def bangjung2(a,b,c):
a=int(a)
b=int(b)
c=int(c)
check=b**2-4*a*c
aa=round(-b/(2*a))
bb=round(math.sqrt(abs(check))/(2*a))
#print (check)
if check>0:
#실근
print ('x=%d, %d' %(aa+bb, aa-bb))
elif check==0:
#중근
print ('x=%d' %(aa))
else:
#허근
if abs(bb)==1:
print ('x=%d+i, %d-i' %(aa, aa))
else:
print ('x=%d+%di, %d-%di' %(aa,abs(bb), aa,abs(bb)))
in_num=input('이차방정식의 a b c를 입력해주세요')
in_num=in_num.split(' ')
bangjung2(in_num[0],in_num[1],in_num[2])
import sys
from numpy import equal
def determinatoR ( A , B , C ) :
determinantt = B**2 - 4*(A)*(C)
if determinantt >= 0 : return True
else : return False
def realformulA ( A , B , C ) :
resultt1 = int((-B + (B**2 - 4*A*C)**(1/2))/2*A)
resultt2 = int((-B - (B**2 - 4*A*C)**(1/2))/2*A)
print(f'{resultt1}'+',' , f'{resultt2}')
def imaginaryfomulA ( A , B , C ) :
resultt1 = int(-B / ( 2*A ))
resultt2 = int(((-(B**2 -4*A*C))*(1/2))/(2*A))
if resultt1 == 0 :
print( f'{resultt2}'+',' , f'{-(resultt2)}' )
elif resultt2 == 1 :
print( f'{resultt1}' , '+' , 'i'+',' ,f'{resultt1}' , '+' , 'i' )
else :
print( f'{resultt1}' , '+' , f'{resultt2}'+'i'+',' ,f'{resultt1}' , '+' , f'{-(resultt2)}'+'i' )
equationlistt = []
equationlistt = (sys.stdin.readline().strip()).split(' ')
equationlistt = list(map(float,equationlistt))
if determinatoR(equationlistt[0],equationlistt[1],equationlistt[2]) == True :
realformulA (equationlistt[0],equationlistt[1],equationlistt[2])
elif determinatoR(equationlistt[0],equationlistt[1],equationlistt[2] ) == False :
imaginaryfomulA(equationlistt[0],equationlistt[1],equationlistt[2])
else : pass
import math as m
a = int(input("이차식 계수 : "))
b = int(input("일차식 계수 : "))
c = int(input("상수식 계수 : "))
D = b**2 - 4*a*c
if (D > 0):
print("답 : %f, %f" % ((-b - m.sqrt(D))/(2*a), (-b + m.sqrt(D))/(2*a)))
elif (D == 0):
print("답 : %d" % (-b/2))
else:
print("답 : %f - %fi, %f + %fi" % (-b / (2*a), m.sqrt(-D) / (2*a), (-b / (2*a)), m.sqrt(-D) / (2*a)))
from typing import Union
from cmath import sqrt
class Complex:
def __init__(self, z: Union[complex, int], n: int = 0):
if type(z) == complex:
self.real = z.real
self.imag = z.imag
if type(z) == int:
self.real = z
self.imag = n
def __str__(self):
if self.imag == 0:
result = f"{self.real:.0f}"
elif self.real == 0:
result = f"{self.imag:.0f}i"
elif self.imag == 1:
result = f"{self.real:.0f} + i"
elif self.imag == -1:
result = f"{self.real:.0f} - i"
elif self.imag > 0:
result = f"{self.real:.0f} + {self.imag:.0f}i"
elif self.imag < 0:
result = f"{self.real:.0f} - {-self.imag:.0f}i"
return result
a, b, c = map(int,input().split())
sol1 = Complex((-b + sqrt(b**2 - 4*a*c))/(2*a))
sol2 = Complex((-b - sqrt(b**2 - 4*a*c))/(2*a))
print(f"{sol1}, {sol2}")
using System;
namespace solution
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("이차방정식 ax2 + bx + c = 0 에서 a b c 을 입력하세요.(예: 1 -3 2)");
string[] coeff = Console.ReadLine().Split(' ');
Console.WriteLine("{0}x2 + {1}x + {2} = 0 의 해: {3}",coeff[0], coeff[1], coeff[2], solution(coeff));
}
private static string solution(string[] coeff)
{
string ans = "";
double a = double.Parse(coeff[0]);
double b = double.Parse(coeff[1]);
double c = double.Parse(coeff[2]);
double D = b * b - 4 * a * c;
string strD = "";
if (D < 0)
{
int rootD = (int)Math.Round(Math.Sqrt(-D) / (2 * a));
strD = rootD == 1 ? "i" : rootD.ToString() + "i";
if (-b / (2 * a) == 0)
ans = strD + " , -" + strD;
else
ans = Math.Round(-b/(2*a)) + " + " + strD + " , " + Math.Round(-b / (2 * a)) + " - " + strD;
}
else if (D > 0)
{
double dd = Math.Sqrt(D) / (2 * a);
Console.WriteLine(-b / (2 * a) + " : "+ dd);
ans = Math.Round((-b - Math.Sqrt(D)) / (2 * a)).ToString() + " , " + Math.Round((-b + Math.Sqrt(D)) / (2 * a)).ToString();
}
else
ans = Math.Round(-b/(2*a)).ToString();
return ans;
}
}
}
2023年06月18日 19:48
import math
coef = input(a)
a,b,c = coef.split( )
a, b, c = float(a), float(b),float(c)
discriminant = math.pow(b,2)-4*a*c
if discriminant >=0:
x1, x2 = (-b+math.sqrt(discriminant))/(2*a), (-b-math.sqrt(discriminant))/(2*a)
print(int(round(x1,0)),int(round(x2,0)))
else:
print(f"{int(round((-b/(2*a)),0))}+{int(round(math.sqrt(abs(discriminant))/(2*a),0))}i", f"{int(round((-b/(2*a)),0))}-{int(round(math.sqrt(abs(discriminant))/(2*a),0))}i")
풀이 작성
코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.