51Nod - 1046 (附关于快速幂的讨论)
题意:
给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
分析:
快速幂模板题。
快速幂:
1.自然数的拆分
对于任何的自然数, 可以把它用形如1001的二进制码表示,进而写成形如 20 + 23 的形式。
这一步的实现:
- 对任意自然数a, 当且仅当 a&1 == 1为真时,其二进制码最低位为1.
- 通过位运算, 将可将其二进制码的任意一端的任意位舍去。
2.因子的迭代
我们需要遍历底数的 20,21,22,23......次方。
这一步的实现:
- 2n+ 2n=2n+1
- ca+b=ca * cb
实现:
import java.util.*;
public class Main {
public static long C;
public static long qPow(long a, long b) {
long ans = 1;
long base = a;
while (b>0) {
if ((b & 1) > 0) {
ans = ((ans%C)*(base%C))%C;
}
base = ((base%C)*(base%C))%C;
b >>= 1;
}
return ans;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
long a = input.nextLong();
long b = input.nextLong();
C = input.nextInt();
System.out.printf("%d\n",qPow(a,b));
input.close();
} }
注意:
一般使用长整形。
51Nod - 1046 (附关于快速幂的讨论)的更多相关文章
- A^B Mod C (51Nod - 1046 )(快速幂)
给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^ ...
- 2019南昌邀请赛 C. Angry FFF Party 大数矩阵快速幂+分类讨论
题目链接 https://nanti.jisuanke.com/t/38222 题意: 定义函数: $$F(n)=\left\{\begin{aligned}1, \quad n=1,2 \\F(n- ...
- 51Nod——T 1113 矩阵快速幂
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 ...
- 51Nod 1046 A^B Mod C(日常复习快速幂)
1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...
- (快速幂)51NOD 1046 A^B Mod C
给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^ ...
- 51nod 1013 3的幂的和 - 快速幂&除法取模
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 Konwledge Point: 快速幂:https:/ ...
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 51nod 1013快速幂 + 费马小定理
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n ...
- 51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)
1004 n^n的末位数字 题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,输出 ...
随机推荐
- 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布
Weixin-App-CMS 是捷微团队开发的微信小程序CMS开源项目,涵盖了微网站的基本功能,能够快速发布简单易用的小程序网站.采用工具“微信web开发”上传小程序,即可快速体验发布体验小程序网站. ...
- 3.Telnet探测端口后怎么退出
使用 'Ctrl' + ' ] ' 一起按退出
- 循环列表最后一条不显示borderBottom
You could achieve this using some logic: return books.map((book, i) => { return( <View style={ ...
- splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
var myFish = ["angel", "clown", "mandarin", "surgeon"]; //从第 ...
- 什么是jquery
框架就是一个半成品,不能直接使用,需要加工处理后才可使用
- 今天遇到一个怪异的问题,maven生成项目war包中有一个Jar包不是我指定的版本,运行时会找不到符号,o(╥﹏╥)o
我要求的jar包: 这是我parent项目中pom文件的依赖管理 这是我要生成war包那个工程最后依赖的jar包,这个时候它们的版本号还是一致的 最后项目生成的: 下图是Dmaven.test.ski ...
- ASP.NET网站不能在VS中调试
点击VS2010工具栏中绿色的小箭头运行网站没问题,按说运行后,应该处于正在运行状态,这个小箭头会变成灰色.但是没有变化,仍然是绿色的小箭头.所以设置断点根本没有截获.任务栏右下角显示的Develop ...
- C语言作业04-数组
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了几种用于循环的语句,能够利用循环解决复杂的问题,但对于几种循环的使用并不熟练,其中对于c ...
- as3.0 比较两个数组
var arr1:Array=[1,2,3,4] var arr2:Array=[1,2,4,3] trace(arr1.join(",") == arr2.join(" ...
- Java第一周作业
Java第一周作业 本周作业: 参考<<教材学习指导(http://www.cnblogs.com/rocedu/p/7911138.html)) 学习第一章视频 参考<<使用 ...