题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6027
题意:数论,求幂,由题可知后面数字非常大,极其容易爆掉,在每次乘和加前后都要取模,以免爆掉。
第一次写题时没有理解该如何取模,导致题目一直爆,听人家说后了解每次运算都得取模。。。。
#include<bits/stdc++.h>
using namespace std;
const int inf=1e9+7;
long long f(int i,int k)
{
long long d=i;
for(int j=1;j<k;j++)
{
d=d%inf;
d*=i;
d=d%inf;
}
return d;
}
int main()
{
int t,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
if(k==0)
{
printf("%d\n",n);
continue;
}
long long sum=0,dis,ans;
for(int i=1;i<=n;i++)
{
sum=sum%inf;
sum=sum+f(i,k);
sum=sum%inf;
}
printf("%lld\n",sum);
}
return 0;
}