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

CodeUp[Q_2112] : 매우 큰 수의 비교

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

1. 문제

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

 

매우 큰 수의 비교

첫 행에 n이 주어진다. ( 1 <= n <= 1,000,000 ) 다음 n줄에 걸쳐 숫자 A B 가 주어진다. ( 1 <= A, B <= 1,000,000 )

codeup.kr

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

이번 문제는 A B 형식으로 입력 받은 행 중 A^B가 가장 큰 행의 번호를 출력하는 문제입니다.

참고로 이번 문제는 직접 A^B를 구하면 엄청 힘들어서(char 배열로 구할수는 있음)

수학시간에 배웠던 "log"함수를 이용하여 계산하면 쉽게 비교할수 있습니다.

 

 

2. 풀이방법

STEP 1. log(A^B) = B*log(A)

 

 

3. 해답

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

int main()
{
	int n;
	int j = 0;
	double a, b;

	double tmp = 0.0;

	scanf("%d", &n);

	for (int i = 0; i < n; i++) {
		scanf("%lf %lf", &a, &b);
		// log를 이용하여 비교
		if ((b*log(a)) > tmp) {
			tmp = (b * log(a));
			j = i;
		}
	}

	printf("%d", j + 1);
	return 0;
}