ACdream 1007
input
T <=10
n k n<=1000 k<=10^18
a1,a2,...an |ai|<=10^18
output
(a1^k+a2^k+...+an^k)%10^10+7
Sample Input
2
3 1
1 2 3
3 10
1 2 3
Sample Output
6 60074
做法:快速幂+__int128,需注意ai可能是负数,模的是10^10+9,超int了
模乘法:对一个数可以拆分为N=(P*(N/P)+(N%P))
#include <bits/stdc++.h>
#define MAX 100000
#define LL long long
//#define __int128 long long
#define mod 10000000007LL
using namespace std;
int cas=,T;
template <class T>
bool scanff(T &ret)
{ //Faster Input
char c; int sgn; T bit=0.1;
if(c=getchar(),c==EOF) return ;
while(c!='-'&&c!='.'&&(c<''||c>'')) c=getchar();
sgn=(c=='-')?-:;
ret=(c=='-')?:(c-'');
while(c=getchar(),c>=''&&c<='') ret=ret*+(c-'');
if(c==' '||c=='\n'){ ret*=sgn; return ; }
while(c=getchar(),c>=''&&c<='') ret+=(c-'')*bit,bit/=;
ret*=sgn;
return ;
}
template <class T>
void printff(T ret)
{ //Faster Output
char s[];
if(ret<) { printf("-");ret=-ret; }
int len=;
while(ret)
{
s[++len]=ret%+'';
ret/=;
}
if(!len) s[++len]='';
while(len)
{
printf("%c",s[len]);
len--;
}
}
LL qmod( __int128 a, LL n)
{
__int128 res=;
LL flag=;
if(a<) { flag=(n&?-:);a=-a; }
a%=mod;
while(n)
{
if(n&) res=res*a%mod;
a=a*a%mod;
n>>=;
}
return (LL)res*flag;
}
int main()
{
//freopen("1.in","w",stdout);
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
scanf("%d",&T);
while(T--)
{
int n;
LL k,a,res=;
scanf("%d%lld",&n,&k);
for(int i=;i<n;i++)
{
scanf("%lld",&a);
res=(res+qmod(a,k))%mod;
}
printff((res+mod)%mod);
printf("\n");
}
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return ;
}
ACdream 1007的更多相关文章
- ACdream 1007 (快速幂)
题目链接 a + b Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Problem D ...
- ACdream 1007 a+b 快速幂 java秒啊,快速幂 避免 负数移位出错
a + b ( sigma (ai^x) ) % mod 1 import java.util.*; 2 import java.math.*; 3 import java.io.*; 4 p ...
- Acdream a + b
http://acdream.info/problem?pid=1007 两个 long long 相乘会超long long #include <cstdio> #include < ...
- SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告
题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 . 其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...
- PKU 1007
题名:DNA排序 题意:给定字符串长度.个数,计算每个字符串的逆序数,然后从大到小排列,有兴趣的可以去看下原题. 计算字符串逆序数,然后排序,这里使用了快速排序算法,string释放的时候竟然有问题, ...
- sicily 1007. To and Fro 2016 11 02
// Problem#: 1007// Submission#: 4893204// The source code is licensed under Creative Commons Attrib ...
- 【HDU 1007】Quoit Design
http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近欧式距离模板题. 用分治大法(分治的函数名用cdq纯属个人习惯_(:з」∠)_) 一开始狂M. 后来判 ...
- 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design
题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...
- ACdream 1214---矩阵连乘
ACdream 1214---矩阵连乘 Problem Description You might have noticed that there is the new fashion among r ...
随机推荐
- Left 、right join使用笔记
用过很多次left join,right join,看到查询出的结果,知道可能是没用left join.或者right join导致的结果,但都是用一次,网上查一次使用规则,学到的东西只是皮毛.今天用 ...
- QT 初试 MainWindow简易窗体
1.创建一个空的QT工程文件 2 建立程序文件 MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include<QMainWind ...
- 服务器如何防ssh服务暴力破解??
如图: 当我们遭到暴力破解ssh服务该怎么办 内行看门道 外行看热闹 下面教大家几招办法: 1 密码足够的复杂,密码的长度要大于8位最好大于20位.密码的复杂度是密码要尽可能有数字.大小写字母和特 ...
- (五)python的发展历史
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做 ...
- Date类型常用概念及方法总结(1)
Date类型使用UTC(国际协调时间)1970年1月1日零时开始经过的毫秒数来保存时间. (1)创建当前日期 调用Date不传递参数的情况下,创建的新对象自动获得当前日期和时间 ...
- Web window.print() 打印
web打印 window.print() 我只给出比较有效的,方便的打印方法,有些WEB打印是调用ActiveX控件的,这样就需要用户去修改自己IE浏览器的Internet选项里的安全里的Active ...
- RPC 框架原理详解
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用?也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网 ...
- 字符函数库 - cctype 和 climits 中的符号常量
一. C++从C语言中继承一个与字符相关的.非常方便的函数软件包,他可以简化诸如确定字符是否为大写字母‘数字.标点符号等工作,这些函数的原型在头文件cctype(老式的为ctype.h)中定义的.例如 ...
- eclipse中debug快捷方式
eclipse中如何跳转到指定行 :ctrl+L 然后输入行数 F5:跳入方法 F6:向下逐行调试 F7:跳出方法 F8:直接跳转到下一个断点 持续更新
- linux shell脚本学习xargs命令使用详解
作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...