2017.8.10
来源:互联网 发布:人活着的意义知乎 编辑:程序博客网 时间:2024/05/22 07:01
今天开始学习分治了!!!!!!! 离梦想又近了一步!!!
分治 顾名思义 “分而治之” 就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
采用分治法解决的问题一般具有的特征如下:
1. 问题的规模缩小到一定的规模就可以较容易地解决。
2. 问题可以分解为若干个规模较小的模式相同的子问题,即该问题具有最优子结构性质。
3. 合并问题分解出的子问题的解可以得到问题的解。
4. 问题所分解出的各个子问题之间是独立的,即子问题之间不存在公共的子问题。
1. 划分步:把输入的问题划分为k个子问题,并尽量使这k个子问题的规模大致相同。
2. 治理步:当问题的规模大于某个预定的阀值n0时,治理步由k个递归调用组成。
3. 组合步:组合步把各个子问题的解组合起来,它对分治算法的实际性能至关重要,算法的有效性很大地依赖于组合步的实现。
分治法的关键是算法的组合步。究竟应该怎样合并,目前没有统一的模式,因此需要对具体问题进行具体分析,以得出比较好的合并算法。
luogu1226 取余运算||快速幂
题目描述
输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
输入输出格式
输入格式:三个整数b,p,k.
输出格式:输出“b^p mod k=s”
s为运算结果
拿到这道题时我用暴力算法骗了83 分 最后i一个数据 TLE了 看来只能用 分治了分治思想:众所周知 平方的运行是很快的 我们就要把数据换成平方
例如 a^16=a^8的平方 而a^8又是a^4的平方 a^4又是a^2的平方……
当遇到奇数时 如 a^5=a^2的平方*a……
另外,本题 b^p会很大,所以,我们在求幂的过程中,要不停的取余数,遵循的一个数学原理,叫同余原理。 a*b%k=(a%k)*(b%k)%k,这样才能在计算中不会让数据溢出,避免了高精度运算。
代码附下:
#include<bits/stdc++.h>
using namespace std;
long long ans=1;
long long b,p,k;
void work()
{
int temp=p, s=b;
while(temp!=0)
{
if (temp%2==1) ans=ans*s%k;
temp/=2;
s=s*s%k;
}
}
int main()
{
cin>>b>>p>>k;
cout<<b<<"^"<<p<<" "<<"mod"<<" "<<k<<"=";
b%=k;
work();
cout<<ans;
return 0;
}
using namespace std;
long long ans=1;
long long b,p,k;
void work()
{
int temp=p, s=b;
while(temp!=0)
{
if (temp%2==1) ans=ans*s%k;
temp/=2;
s=s*s%k;
}
}
int main()
{
cin>>b>>p>>k;
cout<<b<<"^"<<p<<" "<<"mod"<<" "<<k<<"=";
b%=k;
work();
cout<<ans;
return 0;
}
阅读全文
1 0
- 2017.8.10
- 2017.8.10
- 2017.8.10
- 2017.8.10 loli 测试
- 2017.8.10 工作笔记
- 2017.8.10个人感悟
- 2017.8.10------总结+感悟
- 2017.8.10(2)
- 2017.8.10~11总结
- 2017.8
- 2017.8.10 树上染色 失败总结
- 2017.8.10 mqtt 升级代码熟悉
- 2017.8.10 奖励关 思考记录
- (10)2017.8.9-面向对象(5)
- 【集训】jzoj 2017.8.10 noip模拟赛A 总结
- 2017.8.10暑假集训第十一天(下午训练赛)
- 2017.8.10 犯的错堆成山了
- [随心译]2017.8.10-随心译以后转到简书
- 【SpringCloud】(十一):超时机制和断路器及 Hystrix简单实践
- 2017/7/17~2017/8/7的总结
- qt开发环境
- netty(五) NIO创建的TimerServer源码分析之客户端
- low powder design
- 2017.8.10
- memset
- 调整数组顺序使得奇数位于偶数前面
- strcpy与strncpy
- 【干货】程序员总结java学习工作需要的1000+英语单词带解释!
- 我的微信小程序项目进入测试啦
- PCM A律μ律编码
- 初识JS定时器
- 引用