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 怎么写" 的问题,作为有经验的程序员, ...
随机推荐
- Linux讲解之定时任务
https://www.php.cn/linux-369884.html Linux讲解之定时任务 原创2018-05-14 10:11:3101319 本文目录: 12.1 配置定时任务 1 ...
- 013.Kubernetes认证授权
一 Kubernetes认证系统介绍 1.1 访问控制 Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证.授权以及准入控制(Admission Control) ...
- linux系统瓶颈分析(精) CPU Memory IO Network
linux系统瓶颈分析(精) linux系统瓶颈分析(精) (2013-09-17 14:22:00) 分类: linux服务器瓶颈分析 1.0 性能监控介绍性能优化就是找到系统处理中的瓶颈以及去 ...
- bond0 配置ip不生效排查方法
今天巡检的时候,发现无法连接到服务器上面了,于是到机房连接到显示器查看: 1.先检查网卡,协议有没有问题. 2.远程链接的网卡名称是bond0,用ifconfig看看网卡配置,然后发现配置的 ...
- Redis 安装和启动
Redis 安装 安装准备: redis 压缩包 官网下载地址:https://redis.io/download 安装步骤: 第一步:安装 gcc 编译器 官网发布的 Redis 压缩包是 C 语言 ...
- 11.10 chkconfig:管理开机服务
chkconfig 命令是Redhat系列的Linux系统中的系统服务管理工具,它可以用于查询和更新不同的运行等级下系统服务的启动状态. chkconfig命令的参数选项及说明 --list 显 ...
- HTML 标签隐藏占用空间与不占用空间(Day_29)
老是有些忘记或者搞混淆,今天写篇博客. 隐藏占用空间: 将标签的属性设置为: visibility:hidden; <input id="modifId" type=&quo ...
- 我眼中的WebViewJavascriptBridge(图解)
工作中涉及到一段时间iOS开发,在开发中有个小小的框架让我非常深刻,就是WebViewJavascriptBridge,用于原生控件与前端交互通信.我觉得WebViewJavascriptBridge ...
- LLD-LLVM链接器
LLD-LLVM链接器 LLD是LLVM项目中的链接器,是系统链接器的直接替代,并且运行速度比它们快得多.它还提供了对工具链开发人员有用的功能. 链接器按完整性降序支持ELF(Unix),PE / C ...
- MySQL基础练习
表的一些基本操作 1.导入sql文件 source + 文件位置 2.查询某列的数据 select col1, col2, col3 from table 3.查询所有数据 select * from ...