ACdream 1007 a+b 快速幂 java秒啊,快速幂 避免 负数移位出错
( sigma (ai^x) ) % mod
1 import java.util.*;
2 import java.math.*;
3 import java.io.*;
4 public class Main
5 {
6 static BigInteger mod=new BigInteger("10000000007");
7 public static void main(String[] args)
8 {
9 // 对于大量输入,下面方式可能会快一些。
10 Scanner cin=new Scanner(new BufferedInputStream(System.in));
11 int T,n;
12 BigInteger k,sum,x;
13 T=cin.nextInt();
14 while(T-->0)
15 {
16 n=cin.nextInt();
17 k=cin.nextBigInteger();
18 sum=BigInteger.ZERO;
19 for(int i=0;i<n;i++)
20 {
21 x=cin.nextBigInteger();
22 sum=sum.add(x.modPow(k,mod)).mod(mod);
23 }
24 System.out.println(sum);
25 }
26 cin.close();
27 }
28 }
C++ time :192ms
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6 #include <string>
7 #include <vector>
8 #include <set>
9 #include <map>
10 #include <stack>
11 #include <queue>
12 #include <sstream>
13 #include <iomanip>
14 using namespace std;
15 typedef long long LL;
16 const int INF = 0x4fffffff;
17 const double EXP = 1e-5;
18 const int MS = 1005;
19 const int SIZE = 100005;
20 const LL mod=10000000007;
21
22 LL mul_mod(LL x,LL n)
23 {
24 x%=mod;
25 LL res=0;
26 while(n)
27 {
28 if(n&(1LL))
29 {
30 res=(res+x)%mod;
31 }
32 x=((x<<1LL)%mod); // 千万注意,当x为负数的时候,会出错。需要转正
33 n>>=1LL;
34 }
35 return res;
36 }
37
38
39 LL pow_mod(LL x,LL n)
40 {
41 LL res=1LL;
42 x%=mod;
43 while(n)
44 {
45 if(n&(1LL))
46 // res=res*x%mod;
47 res=mul_mod(res,x);
48 // x=x*x%mod;
49 x=mul_mod(x,x);
50 n>>=1LL;
51 }
52 return res;
53 }
54
55 int main()
56 {
57 LL T;
58 LL n,k;
59 scanf("%lld",&T);
60 while(T--)
61 {
62 scanf("%lld%lld",&n,&k);
63 LL ans=0LL,x;
64 for(LL i=0;i<n;i++)
65 {
66 scanf("%lld",&x);
67 if(x>=0)
68 ans=(pow_mod(x,k)+ans)%mod;
69 else
70 {
71 if(k%2==0)
72 ans=(pow_mod(-x,k)+ans)%mod;
73 else
74 ans=(-pow_mod(-x,k)+ans)%mod;
75 }
76 }
77 printf("%lld\n",(ans+mod)%mod);
78 }
79 return 0;
80 }
ACdream 1007 a+b 快速幂 java秒啊,快速幂 避免 负数移位出错的更多相关文章
- hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]
传送门 zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 求幂大法,矩阵快速幂,快速幂模板题--hdu4549
hdu-4549 求幂大法.矩阵快速幂.快速幂 题目 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 ...
- 用于快速排查Java的CPU性能问题(top us值过高)
转载于GIT路径 https://github.com/oldratlee/useful-scripts/blob/master/docs/java.md#beer-show-busy-java-th ...
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...
- 【Java线程池快速学习教程】
1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变 ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- 9天快速入门java
Java入门教程[9天快速入门JAVA] §1.3.简单的Java程序 下面我们先介绍两个简单的Java程序,并对其进行分析. 例1.1. public class HelloWorldApp{//a ...
- ACdream 1007
input T <=10 n k n<=1000 k<=10^18 a1,a2,...an | ...
- Java 程序员快速上手 Kotlin 11 招
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:霍丙乾 近经常会收到一些 "用 Kotlin 怎么写" 的问题,作为有经验的程序员, ...
随机推荐
- 所有的 Unix Like 系统都会内建 vi 文书编辑器。vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面。
所有的 Unix Like 系统都会内建 vi 文书编辑器.vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面. https://blog.csdn.net/carolz ...
- Linux自动执行任务
Linux自动执行任务 耗奇害死猫关注 2018.01.04 10:19:45字数 74阅读 142 单次执行用at和batch,周期性任务执行用crontab.任务执行结束后会将结果返回给发起人,通 ...
- STM32 库函数 延时函数计算
- linux中级之防火墙的数据传输过程
网络数据传输过程 netfilter在数据包必须经过且可以读取规则的位置,共设有5个控制关卡.这5个关卡处的检查规则分别放在5个规则链中(有的叫钩子函数(hook functions).也就是说5条链 ...
- SpringBoot + WebSocket 实现答题对战匹配机制
概要设计 类似竞技问答游戏:用户随机匹配一名对手,双方同时开始答题,直到双方都完成答题,对局结束.基本的逻辑就是这样,如果有其他需求,可以在其基础上进行扩展 明确了这一点,下面介绍开发思路.为每个用户 ...
- Deploying Portainer CE in Docker
Portainer是一个轻量级的管理UI,它允许你轻松地管理你的Docker和Kubernetes集群 https://documentation.portainer.io/v2.0/deploy/c ...
- xshell中登录服务器图形化界面
安装全套的xmanager程序 打开xshell工具程序 点击新建 输入ip等必要信息 点击隧道,英文版为tunnel 勾选红色的选项1和2 填写一些用户名和密码信息(图就略了O(∩_∩)O) 敲入指 ...
- 处理SpringMVC中遇到的乱码问题
乱码在日常开发写代码中是非常常见的,以前乱码使用的是通过设置一个过滤器解决, 现在可以使用SpringMVC给提供的过滤器,在web.xml设置,这比我们自己写的过滤器强大的的多. 注意:每次修改了x ...
- GO学习-(39) 优雅地关机或重启
优雅地关机或重启 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优 ...
- ReentrantLock修饰类文件,实现按类获取锁的逻辑
1.ReentrantLock 给类文件加锁,实现类似synchronized(class)的功能 核心是类文件中,使用static修饰的reentrantLock对象 public class So ...