• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++快速幂与大数取模算法示例

C++快速幂与大数取模算法示例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++大数运算,c++大数加法,c++幂函数,c++求幂,c++幂运算等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、快速幂

其实就是求(a^b)% p ,(其中a,b,p都比较大在int范围内)这类问题。

首先要知道取余的公式: (a*b)%p=(a%p*b%p)%p 。

那么幂不就是乘机的累积吗,由此给出代码:

int fast(int a,int b,int p)

{  long long a1=a,t=1;

  while(b>0)  

  { if(b&1)     /如果幂b是奇数多乘一次,因为后边会除2变偶数,(7/2=3)

  t=(t%p)*(a1%p)%p;

  a1=(a1%p)*(a1%p)%p; 

  b/=2;  }

 return (int)(t%p);

}
</div>

二、大数取模

它的原理就是这个取余公式: (a+b)%p=(a%p+b%p)%p;

那么大数可以看做每一位的那位数字乘以自身的权然后每位相加。

如:12345678=(1*10000000)+(2*1000000)+…+8。

代码如下:

char s[200];

#define mod 10000010;

int main()

{  while(gets(s))

{  int k=strlen(s),sum=0;

 for(int i=0;i<k;i++)

 sum=(sum*10+s[i]-'0')%mod;  /当然要是担心sum还可能溢出,那就对里边再拆开来取余

 cout<<sum<<endl;

} }
</div>

三、总结

以上就是本文的全部内容,希望对大家的学习和工作能有所帮助。如果有疑问可以留言交流。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++快速幂与大数取模算法示例
  • C++实现大数乘法算法代码
  • C++大数模板(推荐)
  • 深入分析C++中两个大数相乘结果不正确的问题
  • c++大数阶乘的实现方法

相关文章

  • 2017-05-28C语言 经典题目螺旋矩阵 实例详解
  • 2017-05-286个变态的C语言Hello World程序
  • 2017-05-28重构-C++实现矩阵的简单实例
  • 2017-05-28C数据结构之双链表详细示例分析
  • 2017-05-28C++中基本的输入输出函数使用指南
  • 2017-05-28C++之异常处理详解
  • 2017-05-28C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法
  • 2017-05-28用C++实现队列的程序代码
  • 2017-05-28C++ 成员变量的初始化顺序问题详解
  • 2017-05-28Cocos2d-x 3.x入门教程(一):基础概念

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入jaxb xjc编码问题的详细介绍
    • C++中的操作符重载详细解析
    • C++基于对话框的程序的框架实例
    • c++ STL容器总结之:vertor与list的应用
    • C++按位异或运算符的使用介绍
    • 用C语言求幂函数和指数函数的方法
    • C++ ofstream与ifstream详细用法
    • 华为面试题数字大小写转换
    • C语言代码中调用C++代码的方法示例
    • C++/Php/Python 语言执行shell命令的方法(推荐)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有