c·c++/c 프로그래밍

2의 누승구하기

바로이순간 2013. 5. 31. 02:09

#include <stdio.h>

void mult(int big[], int n) {  // big[0] 에는 다음에 나오는 셀의 갯수가 있다. 만진법이다.

    int i;

    for(i=1;i<=big[0];++i) {

        big[i]=n*big[i];

    }

    for(i=1;i<=big[0];++i) {

        big[i+1]=big[i+1]+big[i]/10000;

        big[i]=big[i]%10000;

    }

    if(big[i]) big[0]=i;

    //printf("%d %d %d %d\n",big[0],big[1],big[2],big[3]);

}

 

int main() {

    int i, n;

    int fac[10001]={1, 1, 0,}; // 10000셀의 정수 십진수 40000 자리까지 나타낸다.

                                                //  10000 팩토리얼 까지 구할수 있다.

    printf("number: ");

    scanf("%d", &n);

 

    for(i=1;i<=n;++i) mult(fac, 2);  // 여기서는 2의 누승을 구하고 있다.

    printf("2^%d=%d", n, fac[fac[0]]);

    for(i=fac[0]-1; i>0; --i) printf("%04d",fac[i]);

    // printf("  ##%d", fac[0]);

    return 0;

}




위의 프로그램은 아래 답변을 하기 위해서 고쳐본 것입니다.

------------------------------------------------------------------------------------

 하노이탑 그거 64개를 옮길려면 몇 초가 걸릴까요?

(1개 옮길때마다 1초가 걸린다고 하면요)

빨리 가르켜 주셨으면 좋겠어요.



1844 6744 0737 0955 1615 초 걸립니다. (2의 64승 - 1)


천팔백사십사 경  육천칠백사십사 조 칠백삼십칠 억 구백오십오 만 천육백십오 초 걸리는 것입니다.


대개 5백8십1억년 정도 걸립니다.

'c·c++ > c 프로그래밍' 카테고리의 다른 글

2진수를 10진수로 바꾸기  (0) 2013.05.31
큰 정수의 곱셉  (0) 2013.05.31
if없는 지그재그 출력  (0) 2013.05.29
카운터 프로그램  (0) 2013.05.29
속이 빈 마름모  (0) 2013.05.29