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

博客介绍了如何使用快速幂模版来解决p次方求和的算法问题,提供了具体的题目链接NYOJ420,并分享了通过快速幂模板实现的AC代码,运行时间为120ms。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接 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);
#endif
	int 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;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值