[一本通学习笔记] 快速幂
作者:互联网
好无聊啊
10193. 「一本通 6.1 例 1」序列的第 k 个数
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int modulo = 200907;
int qpow(int p, int q) {
int r = 1;
for (; q; (p *= p) %= modulo, q >>= 1)
if (q & 1)
(r *= p) %= modulo;
return r;
}
int inv(int p) { return qpow(p, modulo - 2); }
signed main() {
int T, a, b, c, k;
cin >> T;
while (T--) {
cin >> a >> b >> c >> k;
if (a + c == 2 * b) {
cout << (a + (b - a) * (k - 1)) % modulo << endl;
} else {
if (k == 1)
cout << a % modulo << endl;
if (k == 2)
cout << b % modulo << endl;
if (k >= 3) {
cout << (a * qpow(b / a, k - 1)) % modulo << endl;
}
}
}
return 0;
}
10194. 「一本通 6.1 练习 1」A 的 B 次方
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a, b, m;
int qpow(int p, int q) {
int r = 1;
for (; q; (p *= p) %= m, q >>= 1)
if (q & 1)
(r *= p) %= m;
return r;
}
signed main() {
cin >> a >> b >> m;
cout << qpow(a, b) << endl;
}
10196. 「一本通 6.1 练习 3」越狱
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int modulo = 100003;
int qpow(int p, int q) {
int r = 1;
for (; q; (p *= p) %= modulo, q >>= 1)
if (q & 1)
(r *= p) %= modulo;
return r;
}
signed main() {
int n, m;
cin >> m >> n;
cout << ((qpow(m, n) - qpow(m - 1, n - 1) * m) % modulo + modulo) % modulo << endl;
return 0;
}
标签:qpow,modulo,cout,笔记,int,long,学习,一本,return 来源: https://www.cnblogs.com/mollnn/p/11621774.html