萌萌指数和 sum解题报告
2015-09-30 20:40
274 查看
题目:
/*
题目地址:http://www.luogu.org/problem/show?pid=T113 //东营一中ACM赛制题
题目背景 Background
当腹黑的指数遇上呆萌的模运算,(“▔□▔)/你懂得(“▔□▔)/
题目描述 Description
求1^b+2^b+3^b+……+a^b的和mod 10000的结果。
输入输出格式 Input/output
输入格式:
第一行一个整数T,表示一共有T组数据。
接下来T行,每行两个整数a,b。
输出格式:
一共T行。
每行仅一个整数表示结果。
输入输出样例 Sample input/output
样例测试点#1 输入样例:
1
2 3
输出样例:
9
说明 description
对于30%数据,T<=10, a,b<=1000
对于100%数据,T<=100, a,b<=1,000,000,000
*/
第一眼看上去,这是一个很明显的快速幂。。。快速幂加mod。但当你写出未加优化的代码,套入最长的数据(999999998 999999999),发现和(999999999 999999999)输出完全一样时,你就会发现情况不对了。为什么得出的结果一样?/都是零/然后你进行测试时,TLE*10。
这是为什么呢?那是10^10的数据,怎么测都是很多。。。。。。
好吧,我们再换种思路。然后发现,2^1=(2^4001)%10000。。。以后同理。。。ok,有救了——
附:(a^b)%c=((a%c)^b)%c
所以基本上就是走一步一mod,mod着mod着到最后就AC了。
Orzzz
ok,这次是P代码。。。
/*
题目地址:http://www.luogu.org/problem/show?pid=T113 //东营一中ACM赛制题
题目背景 Background
当腹黑的指数遇上呆萌的模运算,(“▔□▔)/你懂得(“▔□▔)/
题目描述 Description
求1^b+2^b+3^b+……+a^b的和mod 10000的结果。
输入输出格式 Input/output
输入格式:
第一行一个整数T,表示一共有T组数据。
接下来T行,每行两个整数a,b。
输出格式:
一共T行。
每行仅一个整数表示结果。
输入输出样例 Sample input/output
样例测试点#1 输入样例:
1
2 3
输出样例:
9
说明 description
对于30%数据,T<=10, a,b<=1000
对于100%数据,T<=100, a,b<=1,000,000,000
*/
第一眼看上去,这是一个很明显的快速幂。。。快速幂加mod。但当你写出未加优化的代码,套入最长的数据(999999998 999999999),发现和(999999999 999999999)输出完全一样时,你就会发现情况不对了。为什么得出的结果一样?/都是零/然后你进行测试时,TLE*10。
这是为什么呢?那是10^10的数据,怎么测都是很多。。。。。。
好吧,我们再换种思路。然后发现,2^1=(2^4001)%10000。。。以后同理。。。ok,有救了——
附:(a^b)%c=((a%c)^b)%c
所以基本上就是走一步一mod,mod着mod着到最后就AC了。
Orzzz
Const p=10000; Var a,b,i,j,k,m,n,t,o,ans:longint; f:array[0..10000] of longint; Function pow(a,b,n:qword):qword; var t,y:qword; begin t:=1; y:=a; while b<>0 do begin if(b and 1)=1 then t:=t*y mod n; y:=y*y mod n; b:=b shr 1; end; pow:=t; end; Begin readln(t); for o:=1 to t do begin fillchar(f,sizeof(f),0); readln(a,b); k:=a div p; m:=a mod p; if b>=4000 then b:=b mod 4000+4000; for i:=1 to p do f[i]:=(f[i-1]+pow(i,b,p))mod p; ans:=(k*f[p]+f[m])mod p; writeln(ans); end; end.
ok,这次是P代码。。。
相关文章推荐
- Android和服务器长连接
- JavaScript高级程序设计之函数表达式之闭包之内存泄漏第7.2.3讲笔记
- UML——用例图
- ocp-14
- Genymotion安装软件失败;向Genymotion虚拟机拖入apk提示错误
- ocp-13
- HashMap,LinkedHashMap,TreeMap之间的区别
- HashMap,LinkedHashMap,TreeMap之间的区别
- linux下暴力破解工具hydra【转】
- ocp-12
- Android微信支付:如何跑通微信支付官方Demo
- 观影有感2
- 制作网页2---PHP学习拾遗
- HDU 2082 母函数
- Linux正则表达式
- Code First 指定外键名称
- 剑指offer—合并两个排序的链表
- 单片机串口发送数据帧
- ocp-11
- 并查集