【基础练习】【快速幂】codevs3500 快速幂入门题解
来源:互联网 发布:淘宝网电动工具 编辑:程序博客网 时间:2024/06/02 01:35
啥也不说了 这是最基础的快速幂了 手打练习一下 非递归的有点点晕 都忘光了
直接上代码
非递归
递归版本写出来是这个样子 两种都不对 原因未知!
//codevs3500 ??? ????????? ??//copyright by ametake#include<cstdio>#include<cstring>#include<iostream>using namespace std;int mi(long long a,long long b,long long c){ if (b==0) return 1; long long x=mi(a,b/2,c); long long ans=(x*x)%c; if (b&1) ans=(ans*a)%c; return ans;}int main(){freopen("1.txt","r",stdin); long long a,b,c; cin>>a>>b>>c; cout<<mi(a,b,c)<<endl; return 0;}
以及
//kuaisumidigui;#include<iostream>#include<cstdio>using namespace std;long long mi(int a,int b,int c);int main(){freopen("1.txt","r",stdin);int a,b,c;cin>>a>>b>>c;cout<<mi(a,b,c);return 0;}long long mi(int a,int b,int c){if (b==0) return 1;long long x=mi(a,b/2,c);long long ans=(x*x)%c;if (b%2==1) ans=(ans*a)%c;return ans;}
里奥同学提供了一种非常简洁明了的两行代码快速幂非递归 但是还是没有过= =不知为什么 哪位大神来看看?
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;long long mi(long long a,long long b,long long c){ for(long long t = a, B = b-1; B; B >>= 1, t = (t%c) * (t%c) % c)if(B&1) a = (a%c) * (t%c) % c; return a;}int main(){freopen("1.txt","r",stdin);long long a,b,c; cin>>a>>b>>c;cout<<mi(a,b,c);return 0;}
所以还是写非递归原始版吧···
——一曲高歌一樽酒,一人独钓一江秋。
1 0
- 【基础练习】【快速幂】codevs3500 快速幂入门题解
- [codevs3500] 快速幂入门
- 【基础练习】【快速幂】codevs3285 转圈游戏题解
- 【基础练习】【组合数+快速幂】codevs1137 计算系数题解
- 矩阵快速幂练习
- Codevs_P3500 快速幂入门
- 快速幂入门
- 快速幂学习入门
- 矩阵快速幂入门
- sdnu1349.快速幂入门
- 快速幂入门
- Python基础 - 快速入门
- C#快速入门基础
- git基础快速入门
- LaTex快速基础入门
- MySQL基础,快速入门
- 【数学基础】快速幂
- 快速幂算法基础
- 把自定义的muxer加入ffmpeg源码
- 【牛腩新闻发布系统】——表格边框显示问题
- 智能指针总结
- 考生心得:SAT阅读考试常见问题解答
- Eclipse全局搜索
- 【基础练习】【快速幂】codevs3500 快速幂入门题解
- git工程的readme的常用排版命令
- bzoj 2434 [Noi2011]阿狸的打字机 [AC自动机+树状数组]
- centos 系统安装KVM
- List,Set,Map用法以及区别
- 操作系统实验六——死锁问题实验
- jQuery 教程
- The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .pn
- Java 汉字转拼音首字母缩写