POJ1995(整数快速幂)
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(整数快速幂)的更多相关文章
- HDU 2817 A sequence of numbers 整数快速幂
A sequence of numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)
题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...
- 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...
- 【poj1995】快速幂
题目大意 求a^b %p 1≤a,b,p≤10^9 思路 时间O(10^9)一定会爆T,采用数学方法+位运算,得到O(log b)的快速幂算法 代码 #include<cstdio> #i ...
- hdu2817之整数快速幂
A sequence of numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu4704之费马小定理+整数快速幂
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...
- 整数快速幂hdu(1852)
hdu1852 Beijing 2008 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others ...
- 整数快速乘法/快速幂+矩阵快速幂+Strassen算法
快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c 二.矩 ...
- Luogu T7152 细胞(递推,矩阵乘法,快速幂)
Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...
随机推荐
- 七、Block 封装代码
1.概念:封装代码块,调用的时候使用 2.声明 返回类型(^名字)(参数1,参数2..) = (参数类型 变量1,参数类型, 变量2){ }; int (^Sum)(int,int) = ^(int ...
- WPF RadioButton 转换
模型 public class people { public string name{get;set;} public bool? sex{get;set;} } 转换器 namespace Hel ...
- Managing the Lifecycle of a Service
service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径: A started service 被开启的service通过其他组件调用 startService()被创建. 这种 ...
- mac终端命令大全介绍
OSX 的文件系统 OSX 采用的Unix文件系统,所有文件都挂在跟目录 / 下面,所以不在要有Windows 下的盘符概念. 你在桌面上看到的硬盘都挂在 /Volumes 下. 比如接上个叫做 US ...
- 网站如何启用SSL安全证书?IIS7启用新建Https:/
网站使用SSL,通过SSL证书申请,然后导入之后.我们需要对网站进行设置才能正常使用SSL证书,具体如何操作让网站启用SSL呢,本经验以一个网站添加SSL主机头的方式为例来,网站启用SSL服务器安全证 ...
- win系统 添加、修改右键“发送到”
发现大家在往U盘,移动硬盘传东西的时候,总是喜欢在本地把文件复制(缺德的还会用剪切)然后在打开U盘选择粘贴,其实完全没必要使用那么多步骤,不知道大家注意没有,只要在你本地的文件上右键--发送到--你的 ...
- [CareerCup] 2.3 Delete Node in a Linked List 删除链表的节点
2.3 Implement an algorithm to delete a node in the middle of a singly linked list, given only access ...
- 关于使用Css设置Canvas画布大小的问题
问题分析 我们在调整画布大小时,希望画布中的图形保持不变,只是改变画布本身的大小.但是如果使用Css设置画布大小,则会出现问题. 问题描述 如果使用Css设置Canvas画布的大小,则导致画布按比例缩 ...
- java中String类型变量的赋值问题
第一节 String类型的方法参数 运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String( ...
- Bootstrap系列 -- 25. 下拉菜单分割线
在Bootstrap框架中的下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的<li>,并且给这个<li>添加类名“divider”来实现添加 ...