inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-N

재귀 부분이 이해가 되지 않습니다.

436

log

작성한 질문수 9

0

```

ll go(ll a, ll b){
    if(b == 1) return a % c;
    ll _c = go(a, b / 2);
    _c = (_c * _c) % c;
    if(b % 2)_c = (_c * a)% c;
    return _c;
}

```

해당 go 함수에서 인자, a, b 를 

a 는 숫자 로, b 는 지수로 생각했습니다.

그래서 지수가 1 인 경우 a % c 를 통해 반환하고

 

`ll _c = go(a, b /2)` 구문과 그 밑은 

2^10 == 2^5 * 2^5 이므로 해당 과정을 수행한다고 생각합니다.

 

근데 (여기서 질문)

```

if(b % 2) {

  _c = (_c * a)% c;

}

```

- 지수(b)가 홀 수 인 경우 해당 작업이 왜 필요한지 이해가 되지 않습니다.

 

감사합니다.

C++ 코테 준비 같이 해요!

답변 1

2

큰돌

자 예를 들어 5번 곱한다고 해보죠. 이를 2번짜리 2개와 1번짜리 1개로 나눌 수 있겠죠? 

이 때 1번짜리 1개를 처리하는데 홀수인 경우로 따로 if문으로 빼서 하는 작업이 필요한겁니다.

4번 곱한다고 했을 때 2번 2번 딱 떨어지지만 5번인 경우 그렇게 되지가 않거든요.

 

감사합니다.

강사 큰돌 올림. 

 

1-E질문입니다!

0

517

2

3-L 틀린 부분 피드백 부탁드립니다.

0

818

2

1-A문제 순열재귀함수 질문입니다.

0

381

1

1-A 일곱난쟁이문제입니다

0

454

1

문제 풀 때 방향성에 대해

0

798

1

맥에서 vs code로 실행 관련 질문입니다

0

522

1

17071번 메모리 초과

0

386

1

1-C질문입니다!

0

418

2

2-B BFS 시간초과질문

0

629

2

1-O 13번 라인

0

440

1

6-J 놀이공원 문제 질문

0

380

1

구현관련 질문

0

482

1

강의 교안

0

319

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

545

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

535

1

1-K

0

473

2

3-G번 질문있습니다.

1

473

3

3-C 실행 시간 질문드립니다.

0

493

1

4-A 문제 풀이 질문있습니다.

0

590

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

435

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

334

1

3-O go 함수 질문 드립니다.

1

446

2

4-A 출력 질문

0

303

1

1주차 1-O 질문드립니다

0

255

1