1、快速幂算法
快速幂算法可以简化幂的求值速度,将原本的暴力求法的时间复杂度O(n)降低为O(logn),大大降低了代码的运行速度。
快速幂大概是这样的一个递归函数:(求a^b)
题目描述
幂 a^b 的末 3 位数是多少?
输入格式
两个正整数 a,b。1≤1001≤a≤100,1≤100001≤b≤10000。
输出格式
从高位到低位输出幂的末三位数字,中间无分隔符。若幂本身不足三位,在前面补零。
输入输出样例
输入 #1复制
2 3
输出 #1复制
008
输入 #2复制
7 2011
输出 #2复制
743
#include <stdio.h>
long long qp (long long a,long long b){//快速幂
if (b == 0) return 1;
if (b == 1) return a;
long long r = 0;
r = qp(a,b/2) % 1000;
r = r * r % 1000;
if (b % 2) r = r * a % 1000;
return r;
}
int main(void)
{
long long a,b;
scanf("%lld %lld",&a,&b);
long long x=qp(a,b);
printf("%03lld",x);
return 0;
}