博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
取余运算(mod)(分治)
阅读量:4972 次
发布时间:2019-06-12

本文共 587 字,大约阅读时间需要 1 分钟。

【问题描述】
       输入b,p,k的值,求bp mod k的值。其中b,p,k*k为长整形数。
【输入样例】mod.in
       2 10 9
【输出样例】mod.out
       2^10 mod 9=7
题目的只要特点是数据过大,
下面先介绍一个原理:A*B%K = (A%K )*(B% K )%K。显然有了这个原理,就可以把较大的幂分解成较小的;
因为是2的10次方数据过大,那有什么办法可以把数据给拆开呢?2的10次方,为两个2的5次方的乘积,而2的5次方又可以
分解为两个2的2次方和一个2的一次方的乘积,利用上述的原理,我们只需要把拆开的数进行模运算就可以,这与大数进行模运算方法相同,
而且拆开的每个数模运算完成之后就可以计算出大数的结果,所以算法是分治。
【代码】
#include
#include
#include
using namespace std;int b,p,k;int f(int);int main(){ scanf("%d%d%d",&b,&p,&k); b%=k;//防止b过大 cout<

 

 

转载于:https://www.cnblogs.com/zzyh/p/6623309.html

你可能感兴趣的文章
BZOJ3894: 文理分科
查看>>
UI自动化测试
查看>>
(转)客户端触发Asp.net中服务端控件事件
查看>>
牛客网Java刷题知识点之什么是单例模式?解决了什么问题?饿汉式单例(开发时常用)、懒汉式单例(面试时常用)、单例设计模式的内存图解...
查看>>
家庭局域网接入Internet
查看>>
sublime开发java配置
查看>>
HTML 页面跳转的五种方法
查看>>
Asp.net Web.config文件读取路径你真的清楚吗?
查看>>
Linux系统目录结构
查看>>
缓存模块redis
查看>>
the operation was attempted on an empty geometry Arcgis Project异常
查看>>
Python-5PyCharm配置
查看>>
C# 数值类型和无穷大
查看>>
小白成长建议(6)-测试的灵魂-云层
查看>>
Weblogic编译JSP后生成的class文件的位置
查看>>
SVN版本回退
查看>>
[ubuntu]Gedit修改文件后提示无法创建备份文件同时不能保存修改过后的文件
查看>>
navicat查看mysql数据表记录数不断变化
查看>>
初探phpcms模块
查看>>
二进制日志备份与恢复,快照备份,复制
查看>>