반응형
https://www.acmicpc.net/problem/4619
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
while loop를 수행하며 b, n을 선언 후 입력해줍니다. 둘 다 0이면 loop를 탈출합니다.
📔 풀이과정
a ^ n <= 200만 이하인 동안 for loop를 수행합니다. 최소의 차이값을 저장할 minDiff, 그 때의 a값 minVal을 지역변수로 선언해줍니다. 1. a^n값과 b의 절댓값 차이를 변수 diff 선언 후 저장해줍니다. 2. 구한 diff가 minDiff보다 작다면 그 때의 차이를 minDiff에, a값을 minVal에 저장해줍니다.
📔 정답출력
minVal을 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int main(){
while(1){
int b, n;
cin >> b >> n;
if(!b && !n) break;
int minDiff = 0x3f3f3f3f;
int minVal = 0x3f3f3f3f;
for(int a = 1; pow(a,n) <= 2000000; a++) {
int diff = abs(pow(a,n) - b);
if(diff < minDiff) minDiff = diff, minVal = a;
}
cout << minVal << '\n';
}
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 6810 : ISBN (0) | 2021.12.03 |
---|---|
(C++) - 백준(BOJ) 6812 : Good times (2) | 2021.12.03 |
(C++) - 백준(BOJ) 4562 : No Brainer (0) | 2021.12.02 |
(C++) - 백준(BOJ) 4084 : Viva la Diferencia (0) | 2021.12.01 |
(C++) - 백준(BOJ) 2997 : 네 번째 수 (0) | 2021.11.28 |