PS/Baekjoon Online Judge

[백준 14731] 謎紛芥索紀 (Large) [C]

kimyoungrok 2021. 8. 2. 01:57

백준 - 14731


풀이

정답은 2의 K제곱들의 합이다. "백준 13731, A" 문제에서 2의 제곱을 구하는 방식을 이용해 풀이했다.

2의 K제곱(D)들의 합(sum_D)을 차수와 계수의 곱에 곱해주는 것을 반복하면 된다.


소스코드

#include <stdio.h>
#define MOD 1000000007
int main() {
    int N;
    scanf("%d", &N);
    long long result = 0, C, K;
    for (int i = 0; i < N; i++) {
        scanf("%d %d", &C, &K);
        long long DC = (C*K)%MOD, sum_D = 1, D = 2;
        K--;
        while (K) {
            if (K & 1)
                sum_D = sum_D*D %MOD;
            D = D*D %MOD;
            K /= 2;
        }
        result = (result + DC*sum_D) %MOD;
    }
    printf("%lld", result);
}

출처 및 참고자료

 

14731번: 謎紛芥索紀 (Large)

성민이는 이번 학기에 미적분학 과목을 수강하고 있다. 다항함수의 미분 단원 과제를 하던 도중 미분을 하기가 귀찮아진 성민이는 미분하려는 함수 f(x)가 주어지면, 미분 된 함수 f’(x)를 자동

www.acmicpc.net

 

[백준 13171] A [C]

풀이 비트 연산자를 사용해 풀이할 수 있다. X의 이진수를 right shift 해주면서, A를 한 번씩 제곱해주다가, X의 이진수의 가장 끝(맨 오른쪽) 숫자가 1일 때, result에 곱해주는 방식으로 풀이했다.  A

kyr-db.tistory.com