728x90
문제
양의 정수 B와 N이 주어졌을 때, B에 가장 가까운 AN의 정수 A를 찾는 프로그램을 작성하시오. AN은 B보다 작거나, 크거나, 같다.
https://www.acmicpc.net/problem/4619
입력
입력은 여러 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있고, B와 N이 주어진다.
(1 ≤ B ≤ 1,000,000, 1 ≤ N ≤ 9) 입력의 마지막 줄에는 0이 2개 주어진다.
출력
각 테스트 케이스에 해당하는 A를 출력한다.
예제
# input
4 3
5 3
27 3
750 5
1000 5
2000 5
3000 5
1000000 5
0 0
# output
1
2
3
4
4
4
5
16
문제 풀이
import sys
input = sys.stdin.readline
while True:
B, N = map(int, input().split())
if B == N == 0:
break
R = int(pow(B, 1/N))
if abs(B-pow(R,N)) <= abs(B-pow(R+1,N)):
print(R)
else:
print(R+1)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90
728x90
문제
양의 정수 B와 N이 주어졌을 때, B에 가장 가까운 AN의 정수 A를 찾는 프로그램을 작성하시오. AN은 B보다 작거나, 크거나, 같다.
https://www.acmicpc.net/problem/4619
입력
입력은 여러 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있고, B와 N이 주어진다.
(1 ≤ B ≤ 1,000,000, 1 ≤ N ≤ 9) 입력의 마지막 줄에는 0이 2개 주어진다.
출력
각 테스트 케이스에 해당하는 A를 출력한다.
예제
# input 4 3 5 3 27 3 750 5 1000 5 2000 5 3000 5 1000000 5 0 0 # output 1 2 3 4 4 4 5 16
문제 풀이
import sys input = sys.stdin.readline while True: B, N = map(int, input().split()) if B == N == 0: break R = int(pow(B, 1/N)) if abs(B-pow(R,N)) <= abs(B-pow(R+1,N)): print(R) else: print(R+1)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90