Acdeam 1007 快速幂+大数乘法
来源:互联网 发布:音乐可视化效果软件 编辑:程序博客网 时间:2024/06/05 16:46
题意很简单,难点在于对10000000007取余,longlong相乘会爆longlong,所以这里将整数分解,b=(p*(b/p)+b%p),然后再相乘的时候一步一步的乘即可。
另外注意,题目最大的坑点在于取模运算,负数取模要取正数,而%一般取得是负数,这时需要处理下。
附代码:
#include <iostream>#include <cstring>#include <cstdio>using namespace std;long long int a[1010];long long int k;long long int s;long long int mod=10000000007;long long int p=100000;long long int mul(long long int a,long long int b){ long long int sum=0; sum=(a*p)%mod; long long int c=b/p; sum=(sum*c)%mod; b=b%p; sum=(sum+(a*b)%mod)%mod; return sum%mod;}long long int sap(long long int a,long long int k){ long long int sum=1; while (k>0) { a=a%mod; if (k%2==1) sum=mul(sum,a); a=mul(a,a); k=k/2; } return sum%mod;}int main(){ int T; cin>>T; while (T--) { int n; s=0; cin>>n>>k; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++) s=(s+sap(a[i]%mod,k))%mod; while (s<0) s=s+mod; cout<<s<<endl; }}
0 0
- Acdeam 1007 快速幂+大数乘法
- 大数乘法求尾数的快速算法
- FFT(快速傅里叶求大数乘法hdoj1402)
- 大数乘法(快速傅立叶变换)上
- 大数乘法(快速傅立叶变换)下
- 大数乘法和快速傅里叶变换FFT
- 快速幂&&快速乘法
- 快速幂 快速乘法
- 快速幂+快速乘法
- 快速乘法-快速幂
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- 大数乘法
- Struts学习笔记(1)---Action处理请求参数
- string的用法
- Java--Socket通信(双向)
- JS中使用EL表达式
- 性能测试之有效实施性能测试
- Acdeam 1007 快速幂+大数乘法
- Git的gc功能
- Linux装机利器Cobbler简述
- hdu 2717 Catch That Cow
- swift学习——关于断言
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(六) 整合各个模块实现功能
- Linux学习笔记——如何在交叉编译时使用共享库
- _00018 Hadoop-2.2.0 + Hbase-0.96.2 + Hive-0.13.1 分布式环境整合,Hadoop-2.X使用HA方式
- MFC自定义消息 消息映射的编写流程