LuoguB2075 幂的末尾 题解
2024-08-25 15:24:59
Content
求 \(a^b\) 的末三位。
数据范围:\(1\leqslant a\leqslant 100\),\(1\leqslant b\leqslant 10^4\)。
Solution
先讲一个性质:\(a^b\bmod1000\) 再补下前导 \(0\) 得出来的就是 \(a^b\) 的末三位。
所以说直接暴力算出来?确实也可行,直接循环,一边循环一边模,最后补齐了 \(0\) 输出即可。
那么想到幂的模还可以想到什么?没错!快速幂可以解决这个问题。如果没学过快速幂的可以前往P1226快速幂模板题的题解中更好地理解快速幂。这里主要放上来的是快速幂的代码。
Code
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
long long n, p;
long long quickPow(long long a, long long b, long long k) {
if(k == 1) return 0;
long long ans = 1;
while(b) {
if(b & 1) ans = ans * a % k;
a = a * a % k;
b >>= 1;
}
return ans;
}
int main() {
scanf("%lld%lld", &n, &p);
return printf("%03lld", quickPow(n, p, 1000)), 0; //还记得 "%03lld" 是什么意思吗?不知道的可以前往我的 B2001 的题解查看。
}
最新文章
- 学习ASP.NET 5和MVC6
- Linux 发行版本及其基于
- Oracle 操作 - 配置
- Linux驱动设计—— 部分系统调用函数原型
- QQ登入(4)QQ分享-内容转载
- Visual C++ 开发心得与调试技巧
- 点评VHDL语言
- 使用Spring简化JDBC操作数据库
- Lucky and Good Months by Gregorian Calendar(模拟)
- HDU ACM 2845 Beans-&;gt;动态规划
- 恢复SQLSERVER被误删除的数据
- HTML5-WebSocket-初探
- python unitest基本
- fastcgi的介绍,原理及配置
- 【IP限制】验证是否限制了境外IP访问权限
- C/C++内存布局及对齐
- 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”
- qt sleep
- ssh很慢的问题转子
- Java中的RASP实现