14731번: 謎紛芥索紀 (Large)
성민이는 이번 학기에 미적분학 과목을 수강하고 있다. 다항함수의 미분 단원 과제를 하던 도중 미분을 하기가 귀찮아진 성민이는 미분하려는 함수 f(x)가 주어지면, 미분 된 함수 f’(x)를 자동
www.acmicpc.net
사진에서 세번째 줄에서 따온 문제입니다.
힌트에서 혹시 다항함수를 어떻게 미분할 지 모르는 경우를 위해 다항함수를 미분하는 예시를 보여줬습니다.
참고로 small 문제는 (www.acmicpc.net/problem/14730) 좀 더 간편하게 미분 된 함수의 계수의 합만 구하는 걸로 출제되었습니다.
이 Large문제는 $N$개의 $K$, $C$를 입력받을 때 $C\times K\times 2^{K-1}$의 합을 구해주면 해결됩니다.
$C$가 양수로 제한되어 모듈로 연산을 수행할 때 주의해야할 점이 딱히 없습니다.
코드는 다음과 같습니다.
#include <stdio.h>
#define modulo 1000000007
long long power_modular (long long x, long long y, long long M);
int main() {
int N;
scanf("%d", &N);
long long sum = 0;
long long C, K;
int i;
for (i = 0; i < N; i++) {
scanf("%lld %lld", &C, &K);
long long temp;
if (K >= 1) {
temp = (((C * K) % modulo) * power_modular(2, K-1, modulo)) % modulo;
}
else {
temp = 0;
}
sum = (sum + temp) % modulo;
}
printf("%lld", sum);
return 0;
}
long long power_modular (long long x, long long y, long long M) {
x %= M;
long long result = 1;
while(y > 0) {
if (y & 1) {
result = (result * x) % M;
}
x = (x * x) % M;
y >>= 1;
}
return result;
}
(C11, 1116KB, 44ms, 제출번호 25936705)
정수 $x$를 추가적으로 입력받아 $f'\left(x \right )$를 구하도록 만들 수도 있는 문제인데 그 점은 살짝 아쉬운 것 같습니다.
'분할 정복을 이용한 거듭제곱 > 정수 거듭제곱' 카테고리의 다른 글
백준 15717번: 떡파이어 (0) | 2021.02.18 |
---|---|
백준 18291번: 비요뜨의 징검다리 건너기 (0) | 2021.02.18 |
백준 13172번: Σ (0) | 2021.02.18 |
백준 4862번: 마지막 자리 (0) | 2021.01.27 |
백준 4233번: 가짜소수 (0) | 2021.01.23 |