풀이
지수가 몹시 크다!
하지만 f`(2)라고 하지 않았던가!
2의 제곱꼴이란 뜻이다!
숫자를 제곱제곱제곱제곱 하면서 1000000000를 log로 줄이자!
나머지 연산에 주의하자!
코드
#include <stdio.h>
const int mod = 1e9 + 7;
int n;
long long s, e, x;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &e, &x);
long long t = 1, p = 2, q = x - 1;
while (q) {
if (q & 1) t = t * p % mod;
p = p * p % mod, q /= 2;
}
if (x) s = (s + (e * x) % mod * t) % mod;
}
printf("%lld", s);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이