Codevs 5208 求乘方取模
5208 求乘方取模
时间限制: 1 s
空间限制: 1000 KB
题目等级 : 未定级
题目描述 Description
给定非负整数A、B、M,求(A ^ B) mod M。
输入描述 Input Description
包含多组输入,输入处理到EOF。
每组输入仅一行,三个用空格隔开的非负整数A、B、M。
输出描述 Output Description
对于每组输入,输出一行,一个非负整数,即(A ^ B) mod M。
样例输入 Sample Input
2 3 100006
32 71 83
900 800 777
样例输出 Sample Output
8
5
219
数据范围及提示 Data Size & Hint
0 <= A, B < 8 * 10^18。
0 < M < 8 * 10^18。
保证A和B不同时为0。
/*
快速幂.
快速乘法防爆.
*/
#include<iostream>
#include<cstdio>
#define LL unsigned long long
using namespace std;
LL a,b,k;
LL Mul(LL a,LL b,LL c)
{
    LL ans=0;
    while(b)
      {
        if(b&1)
          {
            b--;ans+=a;ans%=c;
          }
        b>>=1;a<<=1;a%=c;
      }
    return ans;
}
LL fast_mi(LL a,LL b,LL k){
    LL tot=1;
    while(b){
        if(b&1) tot=Mul(tot,a,k);
        a=Mul(a,a,k);
        b>>=1;
    }
    return tot;
}
int main()
{
    while(cin>>a>>b>>k){
        if(!a)printf("0\n");
        else if(!b) {
            cout<<1%k;printf("\n");
        }
        else {
            cout<<fast_mi(a,b,k);
            printf("\n");
        }
    }
    return 0;
}Codevs 5208 求乘方取模的更多相关文章
- NYOJ--102--次方求模(快速求幂取模)
		次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ... 
- E - A^B mod C (大数乘方取模)
		Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63) ... 
- POJ 3761 Bubble Sort(乘方取模)
		点我看题目 题意 : 冒泡排序的原理众所周知,需要扫描很多遍.而现在是求1到n的各种排列中,需要扫描k遍就变为有序的数列的个数,结果模20100713,当然了,只要数列有序就扫描结束,不需要像真正的冒 ... 
- 组合数取模Lucas定理及快速幂取模
		组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ... 
- HDU--杭电--4506--小明系列故事——师兄帮帮忙--快速幂取模
		小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ... 
- 九度OJ 1085 求root(N, k) -- 二分求幂及快速幂取模
		题目地址:http://ac.jobdu.com/problem.php?pid=1085 题目描述: N<k时,root(N,k) = N,否则,root(N,k) = root(N',k). ... 
- 二分求幂/快速幂取模运算——root(N,k)
		二分求幂 int getMi(int a,int b) { ; ) { //当二进制位k位为1时,需要累乘a的2^k次方,然后用ans保存 == ) { ans *= a; } a *= a; b / ... 
- C语言fmod()函数:对浮点数取模(求余)
		头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ... 
- 【learning】多项式相关(求逆、开根、除法、取模)
		(首先要%miskcoo,这位dalao写的博客(这里)实在是太强啦qwq大部分多项式相关的知识都是从这位dalao博客里面学的,下面这篇东西是自己对其博客学习后的一些总结和想法,大部分是按照其博客里 ... 
随机推荐
- 解决android锁屏或解锁后activity重启的问题
			If your target build version is Honeycomb 3.2 (API Level 13) or higher you must put the screenSize f ... 
- puppet重申证书
			直接上步骤,由于测试用的是PE3.X版本,在网上搜的命令几乎与PE相关的puppet命令不同了, 1.在PE-Client操作,停止pe-puppet,pe-mcollective资源; puppet ... 
- POJ 2115 C Looooops(扩展欧几里得)
			辗转相除法(欧几里得算法) 时间复杂度:在O(logmax(a, b))以内 int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a ... 
- 在C#中生成唯一的字符串和数字【GUID】转
			转自:http://www.cnblogs.com/lcwzj/archive/2009/04/16/1436992.html 当我们想要获得一个唯一的key的时候,通常会想到GUID.这个key非常 ... 
- 新年Uber司机端换新装啦!
			滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ... 
- 问题-Error creating object. Please verify that the Microsoft Data Access Components 2.1(or later) have been properly installed.
			问题现象:软件在启动时报如下错误信息:Exception Exception in module zhujiangguanjia.exe at 001da37f. Error creating obj ... 
- hdoj 1898 Sempr == The Best Problem Solver?
			Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/3276 ... 
- eas bos 编辑界面 editUIt 属性值为空
			在编辑界面,我们可以正常的保存某个值到数据库,同时列表界面也可以正常显示. 但是当我们再次打开这个编辑界面的时候,该属性值缺无法显示. 通常情况下,通过下面两个方法可以解决 方法一: 在编辑界面重写一 ... 
- 用lambda构建ORM查询语句
			本文介绍如何解析lambda表达式来获取一个满足条件的查询语句. 先看个截图 通过设置实体对象Article_Content的查询表达式,就可以获取对应的参数化SQL语句,使用起来很方便,减少了代码 ... 
- css3划过图片闪光
			css代码 01 .img { display:block; position: relative; width:800px; height:450px; margin:0 auto;} 02 .im ... 
