(快速幂) 求A^B的最后三位数表示的整数

Description

求A^B的最后三位数表示的整数。 
说明:A^B的含义是“A的B次方”

Input

输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。

Output

对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。

Sample Input

2 3

12 6

6789 10000

0 0

Sample Output

8

984

1

快速幂求n^n;

 1 int f1(int a,int b)
 2 {
 3     int t=1;
 4     while(b)
 5     {
 6         if(b % 2 != 0)
 7         {
 8             t*=a;
 9             b--;
10         }
11         a*=a;
12         b/=2;
13     }
14     return t;
15 }

快速幂求n^n后y位;

 1 int f2(int a,int b)
 2 {
 3     int t=1;
 4     while(b)
 5     {
 6         if(b % 2 != 0)
 7         {
 8             t=(t*a)%x;    //x控制要求的位数
 9             b--;
10         }
11         a=(a*a)%x;
12         b/=2;
13     }
14     return t;
15 }
 1 #include<cstdio>
 2 int f(int a,int b)
 3 {
 4     int t=1;
 5     while(b)
 6     {
 7         if(b%2!=0)
 8         {
 9             t=(t*a)%1000;
10             b--;
11         }
12         a=a*a%1000;
13         b/=2;
14     }
15     return t;
16 }
17 int main()
18 {
19     int a,b;
20     while(scanf("%d %d",&a,&b)&&a&&b)
21     {
22         printf("%d\n",f(a,b));
23     }
24 }
时间: 2024-10-14 08:29:13

(快速幂) 求A^B的最后三位数表示的整数的相关文章

POJ 3070-Fibonacci(矩阵快速幂求斐波那契数列)

Fibonacci Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3070 Appoint description:  System Crawler  (2015-02-28) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn ? 1 +

poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)

题意就是用矩阵乘法来求斐波那契数列的第n项的后四位数.如果后四位全为0,则输出0,否则 输出后四位去掉前导0,也...就...是...说...输出Fn%10000. 题目说的如此清楚..我居然还在%和/来找后四位还判断是不是全为0还输出时判断是否为0然后 去掉前导0.o(╯□╰)o 还有矩阵快速幂的幂是0时要特判. P.S:今天下午就想好今天学一下矩阵乘法方面的知识,这题是我的第一道正式接触矩阵乘法的题,欧耶! #include<cstdio> #include<iostream>

hdu 3221 Brute-force Algorithm(快速幂取模,矩阵快速幂求fib)

http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序,问funny函数调用了多少次. 我们定义数组为所求:f[1] = a,f[2] = b, f[3] = f[2]*f[3]......f[n] = f[n-1]*f[n-2].对应的值表示也可为a^1*b^0%p,a^0*b^1%p,a^1*b^1%p,.....a^fib[n-3]*b^fib[n-2]%p.即a,b的指数从n=3以后与fib数列

数论——快速幂,模运算及快速幂求逆元

一.快速幂 原理: 快速幂的原理十分简单. ak=a2^0*a2^1*a2^2*…a2^x,其中k=20+21+22+…+2x. 这显然是正确的.因为任何一个数都可以表示成二进制. 接下去利用位运算实现即可. 代码实现 模板题链接:快速幂 代码模板如下:时间复杂度O(logk) int qmi(int a,int k,int p) { int res=1%p; while(k) { if(k&1)res=(long long)res*a%p; a=(long long)a*a%p; k>&g

a^b(快速幂) 求 a 的 b 次方对 p 取模的值。

题目详情 求 a 的 b 次方对 p 取模的值. 输入格式 三个整数 a,b,p在同一行用空格隔开. 输出格式 输出一个整数,表示a^b mod p的值. 数据范围 0≤a,b,p≤10^9 输入样例: 3 2 7 输出样例: 2 问题解决 正常来说,计算机每秒可运算10^7-10^8次(以c++语言来说)所以这题如果用循环一个个的来乘,最大有10^9的运算量,有可能超时.应采用快速幂算法,运算量则会降为log级别的! 以上面提供的数据来说明 快速幂: 7转化为二进制为1112^0=12^1=2

poj 3070 Fibonacci 【矩阵快速幂 求第N个斐波那契数%1000】

Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11123   Accepted: 7913 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn ? 1 + Fn ? 2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequenc

hdu4686 简单的矩阵快速幂求前n项和

HDU4686 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意:题目说的很清楚了,英语不好的猜也该猜懂了,就是求一个表达式的前n项和,矩阵快速幂一般多加一行一列来完成这个加的操作.具体看代码吧.比较简单,唯一有一点坑的地方,就是ax和bx可能比较大,在求ax*bx的时候,要考虑溢出的问题,需要先mod.其他没有了,直接看代码吧! //Author: xiaowuga #include <bits/stdc++.h> #define

poj 3070 Fibonacci(矩阵快速幂求Fibonacci数列)

题目链接: http://poj.org/problem?id=3070 题意: 我们知道斐波那契数列0 1 1 2 3 5 8 13-- 数列中的第i位为第i-1位和第i-2位的和(规定第0位为0,第一位为1). 求斐波那契数列中的第n位mod 10000的值. 思路: 这里的n很大,有10^9,for一遍肯定是不可以的. 所以要用矩阵乘法求斐波那契数列. f[n+1] = f[n]+f[n-1] f[n] = f[n] 构造以下矩阵,n次幂,mat[1][0] 就是答案 1 1 1 0 求矩

hdu 2837 Calculation【欧拉函数,快速幂求指数循环节】

欢迎关注__Xiong的博客: http://blog.csdn.net/acmore_xiong?viewmode=list Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1912    Accepted Submission(s): 413 链接:click me Problem Description A