3 条题解
-
2
直接一个快速幂 非常的简单 由于题目要求输出后三位 直接对1000进行取模 最后判断前导0 输出即可 下面是两种较优的方案 再优化就是快读我也不会(0v0) (过了就是好代码)
#include <bits/stdc++.h> using namespace std; typedef long long LL; // 递归快速幂 // LL QuickPow(LL a, LL n, LL p) // { // if (a == 0) // return 1; // else if (n % 2 == 1) // return (QuickPow(a, n - 1, p) \* a) % p; // else // { // int temp = (QuickPow(a, n / 2, p)) % p; // return temp \* temp; // } // } // 循环快速幂 LL QuickPow(LL a, LL n, LL p) { int ans = 1; while (n) { if (n & 1) { ans = ((ans % p) \* (a % p)) % p; } a = (a % p \* a % p) % p; n >>= 1; } return ans % p; } int main() { LL a, n, p; cin >> a >> n >> p; p = 1000; int Q = QuickPow(a, n, p); if (Q < 100) { if (Q > 10) { cout << '0' << Q; return 0; } cout << "00" << Q; return 0; } cout << Q; return 0; }
信息
- ID
- 31
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 125
- 已通过
- 24
- 上传者