【p次方求和(快速幂模版)】

来源:互联网 发布:windows全部历代系统 编辑:程序博客网 时间:2024/05/20 10:22

题目链接 NYOJ420

【题目】

p次方求和

时间限制:1000 ms  |            内存限制:65535 KB
难度:3
描述
一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。
输入
第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p,
输入保证0<n<=1000,0<=p<=1000。
输出
输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。
样例输入
210 110 2
样例输出
55385
来源
原创

 

【分析】快速幂模版

【AC CODE】120ms

#include <cstdio>#include <cstring>#define MOD 10003/*int pow_mod(int a, int n)//递归{if(!n) return 1;int x = pow_mod(a,n>>1);long long ans = (long long)x*x%MOD;if(n&1) ans = ans*a%MOD;return (int)ans;}*/int pow_mod(int a, int n)//递推{long long ans = 1, x = a;while(n){if(n&1) ans = (ans*x)%MOD;x = x*x%MOD;n >>= 1;}return ans;}int main(){#ifdef SHY    freopen("e:\\1.txt","r",stdin);#endifint t;scanf("%d%*c", &t);while(t--){int n,p, ans = 0;scanf("%d %d%*c", &n, &p);for(int i = 1; i <= n; i++)ans = (ans+pow_mod(i,p))%MOD;printf("%d\n", ans);}return 0;}



 

0 0
原创粉丝点击