|
저도 회사에서 일하면서 먹고 사느라 눈치보여서 답글을 완전히는 못해드리구요..
2 의 100승 이라고 하면 님과 같은 공식으로 돌리려면 루프를 100번 돌려야겠죠?
근데 아래의 알고리즘으로 했을 경우는 7번 만에 2의 13승 문제를 풀었답니다.
좀 더 생각해보시면 길이 보일듯 한데요.. ^^ 열심히 해보세요..
김희섭 님이 쓰신 글 :
: 안녕하세요~
: 밑에... 이게 문제인데요.
:
: ==================================문제=================================
:
: 제곱승 구하기
:
: 치환문과 곱셈 연산만을 포함하는 프로그램 언어를 가상해 보자. a와 n이라는
: 정수가 주어졌을 때 곱셈횟수를 최소로 하여 b = a^n을 계산해내는 프로그램을
: 작성하라. n = 13일때의 예가 아래에 있다. { } 안에는 program 각 문장에 대
: 한 설명이 들어 있다.
: x1 := a; { = a }
: x2 := x1 * x1 { = a^2 }
: x3 := x2 * x2 { = a^4}
: x4 := x3 * x1 { = a^5 }
: x5 := x3 * x3 { = a^8 }
: x6 := x5 * x4 { = a^13 }
: b := x6 { = a^13}
: ===================================끝==================================
:
: b = a ^ n 에서 . . ^ <- 이게 제곱이란 뜻인가요?
: 곱셈횟수를 최소로 하여 . . . 이것도 무슨 뜻인지 잘 모르겠구 . . .
:
: 저는 아무튼 대충 만들어 봤는데요 . . 루프를 이용해서 . .
:
:
: #include <stdio.h>
: #include <conio.h>
:
: void main(void) {
:
: int i, answer = 0;
: int num , jisu = 0;
:
: printf("This program is calculation aⁿ. . ^ - ^\n"); //아무튼 a의 n승을 계산하는... 프로그램 ;;
: printf("Input num(a) :");
: scanf("%d", &num);
: printf("Input jisu(jisu) :");
: scanf("%d", &jisu);
:
: answer = num;
:
: for(i = 0;i < jisu - 1;i++) {
: answer *= num;
: }
:
: printf("%d", answer);
:
: getch();
: }
:
: 이게 제대로 푼건지 .. 모르겠어요.
:
: 문제점이 있으면 지적좀 해주시면... 감사하겠구요.
: 다른 방법이 있다면 . . 다른 방법으로 푸신 분 계시면
: 어떤 형식으로 풀었는지 글로 설명해 주시거나 소스코드 올려 주셔두 감사하구요 ^ - ^
:
:
|