_bzoj1008 [HNOI2008]越狱【计数】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1008

水题。。。

#include <cstdio>

const int mod = 100003;

long long m, n;

inline int poww(long long di, long long mi) {
	int i;
	for (i = 63; mi >> i & 1 ^ 1; --i);
	long long rt = di;
	for (--i; ~i; --i) {
		rt = rt * rt % mod;
		if (mi >> i & 1) {
			rt = rt * di % mod;
		}
	}
	return (int)rt;
}

int main(void) {
	scanf("%lld%lld", &m, &n);
	printf("%d\n", (poww(m, n) - (m * poww(m - 1, n - 1) % mod) + mod) % mod);
	return 0;
}

  

posted @ 2016-12-11 10:21  ciao_sora  阅读(135)  评论(0编辑  收藏