博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dreamstart 的催促
阅读量:5442 次
发布时间:2019-06-15

本文共 1262 字,大约阅读时间需要 4 分钟。

- dreamstart 的催促
序号:
#120难度:困难时间限制:1000ms内存限制:10M

描述

有一天集训队的学弟们正在计算一堆数,但是 dreamstart 感觉他们算的太慢了,就让他们坐在一起想出一个快速计算的方法,但是由于他们一时想不出来,想让你帮助他们。他们说现在有一个数列,要算出第 i 个数的 i^iii 次幂并且把每个数计算出来的值加到一起,最后答案模 10000019。

聪明的你可以帮助他们吗?

输入

 

第 1 个数字为整数n,1<=n<=10^5

余下 n 个数,每个数的大小不超过10^15

 

输出

 

输出取模之后的和

 

输入样例

4 1 6 9 12

输出样例

3776019

 

 快速幂取摸加欧拉降幂

指数爆炸的时候就要降幂

就是求a^b mod c

可以转化为

a^(b mod phi(c)+phi(c)) mod c

phi 为 欧拉函数

1 #include
2 #define LL long long 3 #define mod 4218984 4 using namespace std; 5 const int MAXN = 1e5+10; 6 const int MOd = 10000019; 7 8 LL a[MAXN]; 9 int n;10 // ll phi( ll n ) { //欧拉函数11 // ll ans = n;12 // for( ll i = 2; i*i <= n; i ++ ) {13 // if( n%i == 0 ) {14 // ans -= ans/i;15 // while( n%i == 0 ) {16 // n /= i;17 // }18 // }19 // }20 // if( n > 1 ) {21 // ans -= ans/n;22 // }23 // return ans;24 // }25 26 LL quick(LL a,LL x, LL MOD){27 LL r = 1;28 while(x>0){29 if (x&1){30 r = (r*a)%MOD;31 x--;32 }33 a = a%MOD*a%MOD;34 x>>=1;35 }36 return r%MOD;37 }38 39 int main(){40 scanf("%d",&n);41 for (int i = 0;i

 

 

转载于:https://www.cnblogs.com/zllwxm123/p/10317137.html

你可能感兴趣的文章
静态路由和默认路由
查看>>
关于阿里开发者招聘节 |这5道笔试真题 你会吗!???
查看>>
C#的异常处理机制
查看>>
vsftp:500 OOPS: could not bind listening IPv4 sock
查看>>
Linux安装BTCPayServer并设置比特币BTC和Lightning支付网关
查看>>
mysql安装,远程连接,以及修改密码
查看>>
Mybatis查询返回Map类型数据
查看>>
java的深拷贝与浅拷贝
查看>>
程序员如何提高工作效率
查看>>
promise
查看>>
将Java应用部署到SAP云平台neo环境的两种方式
查看>>
数据批量导入Oracle数据库
查看>>
调用lumisoft组件发邮件 不需要身份验证 不需要密码
查看>>
DW 正则
查看>>
抓屏原理
查看>>
UNIX网络编程读书笔记:TCP输出、UDP输出和SCTP输出
查看>>
扩展 DbUtility (1)
查看>>
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
查看>>
Hadoop学习笔记系列文章导航
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>