본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2019] : 이차 방정식의 해

by 조원일 2020. 3. 15.
728x90

1. 문제

https://codeup.kr/problem.php?id=2019

 

이차 방정식의 해

정수 a,b,c가 공백으로 구분되어 입력됩니다. ( -10 <= a,b,c <= 10 , a 는 0이 아님) 여기서 a는 x²의 계수, b는 x의 계수, c는 상수항입니다.

codeup.kr

[출처 : 코드업(https://codeup.kr/)]

이번 문제는 우리가 알고있는 근의 공식을 이용하는 문제입니다.

그리 어렵지 않아서 근의공식을 생각하면서 코딩을 진행하면 됩니다.

 

 

2. 해답

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main() {
	int a, b, c;
	float tmp1 = 0.0;
	float tmp2 = 0.0;

	scanf("%d %d %d", &a, &b, &c);

	if ((b == 0) && (c == 0)) {
		printf("%.2f\n", tmp1);
		return 0;
	}

	tmp1 = (float)b / (float)a / 2;
	tmp1 = -tmp1;

	tmp2 = (float)(b * b - (4 * a * c)); // 근의 공식


	if (tmp2 > 0) { // 실수
		tmp2 = sqrt(tmp2);
		tmp2 = tmp2 / (float)(2 * a);

		printf("%.2f\n", tmp1 + tmp2);
		printf("%.2f\n", tmp1 - tmp2);
	}
	else if (tmp2 < 0) { // 허수
		tmp2 = sqrt(-tmp2);
		tmp2 = tmp2 / (float)(2 * a);
		if (tmp2 < 0) tmp2 = -tmp2;
		printf("%.2f+%.2fi\n", tmp1, tmp2);
		printf("%.2f-%.2fi\n", tmp1, tmp2);
	}
	else if (tmp2 == 0) { // 이중근
		printf("%.2f\n", tmp1);
	}

	return 0;
}

'프로그래밍 > CodeUp' 카테고리의 다른 글

CodeUp[Q_2023] : 엑셀의 열 순서  (0) 2020.03.17
CodeUp[Q_2020] : 아로마 수  (0) 2020.03.16
CodeUp[Q_2018] : 개미 수열  (0) 2020.03.14
CodeUp[Q_2017] : 진법 변환  (0) 2020.02.19
CodeUp[Q_2016] : 천단위 구분기호  (0) 2020.02.18