http://poj.org/problem?id=1995

题意:求(A1^B1 + A2^B2 + .....Ah^Bh)%M

直接快速幂,以前对快速幂了解不深刻,今天重新学了一遍so easy

以a^b为例:如果b是偶数那么一定可以写成 (a^2 * a^2 ....)一共是b/2个,那么其实就可以写成(a*a)^(b/2),另a = a*a,b= b/2,此时还是求a^b,只不过a和b已经变了,但是没有问题,还是可以按照上面的方法在判断的,如果b是奇数的话就把a的一个给拿出来先与ans相成,然后现在a的个数就是偶数,就可以按照偶数方法在划分;

2^8 : 8是偶数,a = a* a = 2 * 2= 4,b = b / 2 = 4;也就变成了 4^4,4还是偶数,a = 4 * 4 = 16,b= b / 2 = 2,也就变成了16 ^ 2,2还是偶数再分 a= a * a = 16 * 16,b = b / 2 = 1也就变成了 (16 * 16)^ 1,此时1是奇数ans * a就结束了,

2^5:5是奇数,先把一个2拿出来与ans相乘,ans * a = ans * 2,然后就可以划分了,a = a * a = 2 * 2 = 4,b= b / 2 = 2,也就变成了 4 ^ 2,此时的2是偶数,又可以把a与a相乘,a= a * a = 4 * 4 ,b = b / 2 = 1,也就变成了16^1,此时的b为奇数ans * a = 2 * 16;

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
int a,b,M,sum;
int main()
{
int t,h;
scanf("%d", &t);
while(t--)
{
scanf("%d%d",&M,&h);
sum = ;
while(h--)
{
scanf("%d%d", &a,&b);
int ans = ;
while(b)
{
if(b & )
{
ans = (ans % M) * (a % M) % M;
}
a = (a % M ) * (a % M) % M;
b = b >> ;
}
sum = (sum + ans) % M;
}
printf("%d\n", sum);
} return ;
}

POJ1995(整数快速幂)的更多相关文章

  1. HDU 2817 A sequence of numbers 整数快速幂

    A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  3. 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...

  4. 【poj1995】快速幂

    题目大意 求a^b %p 1≤a,b,p≤10^9 思路 时间O(10^9)一定会爆T,采用数学方法+位运算,得到O(log b)的快速幂算法 代码 #include<cstdio> #i ...

  5. hdu2817之整数快速幂

    A sequence of numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. hdu4704之费马小定理+整数快速幂

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Subm ...

  7. 整数快速幂hdu(1852)

    hdu1852 Beijing 2008 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others ...

  8. 整数快速乘法/快速幂+矩阵快速幂+Strassen算法

    快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c  二.矩 ...

  9. Luogu T7152 细胞(递推,矩阵乘法,快速幂)

    Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...

随机推荐

  1. HTML---总结

    (1) margin负值能让没有宽度的盒子变大. 对于有宽度的盒子,没有浮动,只有margin-top 和margin-left 有效:如果浮动,margin-浮动方向 有效,-top有效,margi ...

  2. 利用concat进行数组复制

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. usb驱动开发10之usb_device_match

    在第五节我们说过会专门分析函数usb_device_match,以体现模型的重要性.同时,我们还是要守信用的. 再贴一遍代码,看代码就要不厌其烦. static int usb_device_matc ...

  4. WP老杨解迷:评论数和下载量、榜单的关系

    书接上回,继续研讨评论系统的深层经验,这次从另外一个角度看清榜单关系,提升装逼水准2个加号,如果你能看懂本文,并活学活用,足可在Win10之前醉卧隆中,通晓Windows Phone市场风云变幻,哪些 ...

  5. IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程

    其实调用方式比较简单,主要也就是两种类型的存储过程:1.更新类型的存储过程2.查询类型的存储过程下面就来看看具体的调用方式:1.更新类型的存储过程sp_InsertAccount: CREATE PR ...

  6. RequiredFieldValidator 根据group组来触发验证

    今天在开发过程中遇到了这样一个问题 在这个用户添加界面中,我使用了多个验证控件RequiredFieldValidator,分别控制用户名密码.在默认情况下,当单击“检查用户名”时,密码的验证控件也被 ...

  7. 分享基于EF+MVC+Bootstrap的通用后台管理系统及架构(转)

    http://www.cnblogs.com/guozili/p/3496265.html 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通 ...

  8. TPLINK GPL code 简要分析

    从TPLINK官网下载了GPL code,下载后文件名是wr841nv9_en_gpl.tar.gz, 但是无论是linux还是windows下解压都提示压缩包有问题,不过还是可以解压出完整的目录的. ...

  9. 你的C#代码是怎么跑起来的(一)

    写了那么多C#代码,大家有没有想过自己写的代码编译后的可执行文件内部是什么样子,是怎样在系统上运行的? 编译成exe,然后双击exe文件运行,这中间到底发生了些什么呢,这篇先来剖析下exe内部的样子: ...

  10. 用html5+js实现掌机游戏赛车demo

    最近无聊,用html5+js做了一个以前玩过的掌机赛车游戏,顺便学习一下画布的api以及巩固一下js基础. 游戏界面,没做什么美化. 游戏规则:游戏界面分为三列,黑色方块随机落下,红色方块可以在三列自 ...