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 怎么写" 的问题,作为有经验的程序员, ...
随机推荐
- mitogen附带文件到远程主机
#!/usr/bin/env python # import mitogen.master import mitogen.select import subprocess import logging ...
- Ansible_使用Ansible galaxy部署角色
一.介绍Anisble galaxy 1.介绍Ansibleu galaxy 1️⃣:Ansible Galaxy (官网:https://galaxy.ansible.com)是一个Ansible内 ...
- protege 构建本体
这里我们使用的是Protégé-OWL规范. 推理机后的内容主要是实操内容,根据推理机来对protege本体模型的一个操作过程,以加深本体模型的一个规范认识. 一.什么是本体(Ontologie) 本 ...
- Django(38)mac安装redis
安装redis 1.使用Homebrew安装Redis brew install redis 执行上述命令后出现以下内容,则成功安装 Download failed: https://mirrors. ...
- nginx的模块化体系结构
nginx的模块化体系结构 nginx的内部结构是由核心部分和一系列的功能模块所组成.这样划分是为了使得每个模块的功能相对简单,便于开发,同时也便于对系统进行功能扩展.为了便于描述,下文中我们将使用n ...
- Docker学习(2) 安装
1 在Ubanru中安装 简单安装: 2 windows安装docker 3 OS X 安装docker
- YOLOv5目标检测源码重磅发布了!
YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...
- 如何在TVM上集成Codegen(下)
如何在TVM上集成Codegen(下) Bring DNNL to TVM: JSON Codegen/Runtime 现在实现将中继图序列化为JSON表示的DNNL codegen,然后实现DNNL ...
- CodeGen标记循环
CodeGen标记循环 标记循环是一个模板文件构造,它允许您迭代CodeGen拥有的标记信息的集合.为了使用标记循环,必须基于至少定义了一个字段标记的存储库结构生成代码. 标 ...
- CVPR2020:点云三维目标跟踪的点对盒网络(P2B)
CVPR2020:点云三维目标跟踪的点对盒网络(P2B) P2B: Point-to-Box Network for 3D Object Tracking in Point Clouds 代码:htt ...