티스토리 뷰

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(21);
    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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함