14731 : 謎紛芥索紀 (Large)

풀이

지수가 몹시 크다!

하지만 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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-09-24 01:22

Read more posts by this author