https://www.acmicpc.net/problem/6376


안 풀리던 이유
- 처음에는 코드를 잘못짜서 0이 0번 인덱스에 있고 1이 1번 인덱스에 있고 2가 3번 인덱스에 있어서 0이 잘못 들어가서 하나씩 밀렸음
이걸 눈치 못 채고 출력 형식 오류인 줄 알고 한참 헤맸음
- 이걸 다시 고치니까 이젠 출력 형식에서 오류가 남
2번째에서 2.5를 출력할 때 print(i, sum)라고 썼는데 float(sum)를 해야 했던 것.. 왜지?
- 그리고 3 이상일 때 소숫점 9자리 출력하는 걸 처음엔
round(sum, 9)로 했는데 이거는 안 됐음
- 중간에 소숫점 8자리인 게 있었는데
round()는 그걸 안 채우고 "%.f9" % sum으로 자릿수 고정했더니 됐음
- 아마
round()는 만약 지정 자릿수가 넘는 게 있으면 거기서 반올림하는 거고 "%.9f"는 무조건 넘든 안 넘든 자릿수를 0으로 채우거나 반올림 하는 거여서 그런 듯함
제출 성공 코드
def fac(n):
sum = 1
for i in range(1, n + 1):
sum *= i
if n == 0:
return 1
else:
return sum
print("n e")
print("- -----------")
sum = 0
for i in range(10):
sum += 1 / fac(i)
if (i < 2):
print(i, int(sum))
elif i == 2:
print(i, float(sum))
else:
print(i, "%.9f" % sum)