티스토리 뷰
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> #include <math.h> void main() { double input = pow(2, 1); int sum = 0; int i = 0; while ((int)(input / pow(10, i)) != 0) ++i; for (int j = i - 1; j >= 0; --j) { sum += (int)(input / pow(10, j)); input = fmod(input, pow(10, j)); printf("%d\t%f\n", sum, input); if (input == 0) break; } printf("%d\n", sum); } | cs |
이와 같이 하면 2^1000처럼 큰 숫자에서는 정확한 답이 나오지 않는다.
이런 것에 제한받지 않는 파이썬으로 구글링해가면서 짜 보았더니 답이 나왔다.
알고리즘만 맞으면 됐지 뭐....
1 2 3 4 5 6 7 8 9 10 11 | import math input=pow(2,1000) sum=0 i=0 while input/pow(10,i)!=0: i=i+1 while i>=0: sum=sum+math.floor(input/pow(10,i)) input=input%pow(10,i) i=i-1 print(sum) | cs |
파이썬 코드에서
2행 pow() 함수를 math.pow()로 쓰면 오류가 나고
그냥 pow()로 쓰면 오류가 나지 않는다.
왜?
'Algorithm > Project Euler' 카테고리의 다른 글
프로젝트 오일러 2번 (0) | 2017.05.19 |
---|---|
프로젝트 오일러 20번 (0) | 2017.05.19 |
프로젝트 오일러 14번 (0) | 2017.05.17 |
프로젝트 오일러 3번 (0) | 2017.05.17 |
프로젝트 오일러 11번 (0) | 2017.05.15 |
댓글