acdream 1007 a+b 快速幂取模
来源:互联网 发布:加盟淘宝店可靠吗 编辑:程序博客网 时间:2024/06/05 17:37
给出k和n个ai,计算∑ai^k mod 10000000007的值。
#include <iostream>#include <cstdio>#define MOD 10000000007#define ll long long//模乘法,本质就是用位运算和加法实现除法//可以防止做乘法时越界ll mul(ll a,ll b){ ll ans = 0; while(b){ if(b&1) ans = (ans + a) % MOD; b = b >> 1; a = (a << 1) % MOD; } ans = ans % MOD; return ans;}//快速幂取模ll pow_mod(ll a,ll b){ if(b == 0) return 1; ll x = pow_mod(a,b / 2); ll ans = mul(x,x)% MOD; if(b % 2 == 1) ans = mul(ans,a) % MOD; return ans;}////ll pow_mod(ll a,ll b)//{// ll ans = 1;// while(b){// if(b&1) ans = mul(ans,a) % MOD;// b = b >> 1;// a = mul(a,a) % MOD;// }// return ans;//}int main(){ int T; std::cin>>T; //scanf("%lld",&T); int n; ll m,k; while(T--){ std::cin>>n>>k; // scanf("%d%lld",&n,&k); ll ans = 0; if(k % 2 == 0){ while(n--){ // scanf("%lld",&m); std::cin>>m; if(m < 0) m = m * -1; ans = (ans + pow_mod(m,k)) % MOD;// if(m == 0 && k == 0){// ans = (ans + 1) % MOD;// } } }else{ while(n--){ //scanf("%lld",&m); std::cin>>m; if(m < 0) { m = m * -1; ans = (ans - pow_mod(m,k)) % MOD; }else{ ans = (ans + pow_mod(m,k)) % MOD; } } } std::cout<<(ans + MOD) % MOD<<std::endl; //printf("%lld\n",(ans + MOD) % MOD); } return 0;}
0 0
- acdream 1007 a+b 快速幂取模
- ACdream 1007 a + b (数学+快速幂)
- ACdream 1000 A + B Problem
- a^b(快速幂取模)
- 快速幂取模 ---> (a^b)%c
- acdream A
- 【快速幂取模】HDU 2035---人见人爱A^B
- hdu2035 人见人爱A^B(快速幂取模)
- HDOJ 2035 人见人爱A^B(快速幂取模)
- HDU 2035 人见人爱A^B (快速幂取模)
- 2035 人见人爱A^B 快速幂取模 水题
- nyoj473 A^B Problem(快速幂取模)
- HDU 2035 人见人爱A^B 快速幂取模
- hdu2035 人见人爱A^B 快速幂取模
- hdu2035 人见人爱A^B(快速幂取模)
- ACdream 群赛1221 Problem B: cxlove is a good man
- ACdream 1007【快速幂+乘法取模】
- fzu 1752 A^B mod C(快速乘+快速幂取模)
- UVA - 10815 Andy's First Dictionary
- 51Nod-1105-第K大的数
- UVA - 10106 Product
- UVA - 424 Integer Inquiry
- UVA - 465 Overflow
- acdream 1007 a+b 快速幂取模
- UVA - 10879 Code Refactoring
- unity中跳跃的实现
- UVA - 10112 Myacm Triangles
- Android微信支付彻底扫坑
- java8--面向对象 上(疯狂java讲义3) 复习笔记
- UVA - 10387 Billiard
- UVA - 579 Clock Hands
- Shader特效——“Barrel Blur”的实现 【GLSL】