Description
Input
Output
(A1B1+A2B2+ ... +AHBH)mod M.
Sample Input
3 16 4 2 3 3 4 4 5 5 6 36123 1 2374859 3029382 17 1 3 18132
Sample Output
2 13195 13
题意:求和
思路:快速幂取模,递归和非递归两个版本
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
typedef long long ll;
using namespace std;
/*int pow_mod(int a, int n, int m) {
if (n == 0)
return 1;
if (n == 1)
return a%m;
int x = pow_mod(a, n/2, m);
ll ans = (ll) x*x%m;
if (n % 2 == 1)
ans = ans * a % m;
return (int)ans;
}
*/
int pow_mod(int a, int n, int m) {
ll ans = 1;
ll tmp = (ll)a;
while (n) {
if (n & 1)
ans = (ans * tmp) % m;
tmp = (tmp * tmp) % m;
n >>= 1;
}
return (int) ans;
}
int main() {
int t, n, m;
while (scanf("%d", &t) != EOF && t) {
for (int i = 0; i < t; i++) {
int sum = 0;
scanf("%d%d", &n, &m);
int a, b;
for (int j = 0; j < m; j++) {
scanf("%d%d", &a, &b);
sum = (sum + pow_mod(a, b, n)) % n;
}
printf("%d\n", sum);
}
}
return 0;
}POJ - 1995 Raising Modulo Numbers,布布扣,bubuko.com
POJ - 1995 Raising Modulo Numbers
原文:http://blog.csdn.net/u011345136/article/details/38380283