2019/12/15错题
程序员文章站
2024-01-29 10:29:40
...
一定要记录这一道题,昨天晚上找bug找到2点,今天又找了一个小时,还是对着答案那种找法,我真是太蠢了,快速幂q=q*q%c;这一步,q需要用unsigned long long.
zy学长经常用蚂蚁花呗,所以花呗欠了很多很多,以至于很少参加三块钱以上的活动.
详细欠额计算方法如下:学长连续欠了
nn
n 个月的钱都没有还,给定两个整数
nn
n 和
kk
k ,第
ii
i 个月需要还的钱数为
f(i)=ikf(i)=i^k
f(i)=i
k
. 请计算zy学长现在要还的钱数
f(1)+f(2)+f(3)+…+f(n)f(1)+f(2)+f(3)+…+f(n)
f(1)+f(2)+f(3)+…+f(n)
输入
第一行为一个整数
T(1≤T≤20)T (1\leq T \leq 20)
T(1≤T≤20)
以下
TT
T 行,每行包含两个整数
n(1≤n≤1⋅104)n (1\leq n\leq 1\cdot 10^4)
n(1≤n≤1⋅10
4
)和
k(0≤k≤5)k (0\leq k\leq 5)
k(0≤k≤5)
输出
对于每个测试样例,每行打印一个整数,为zy学长现在要还的钱数,答案对
10^9+7 取模
样例
输入
3
2 5
4 2
4 1
输出
33
30
10
#include<iostream>
using namespace std;
const int c=1e9+7;
int main(){
int t,n,k;
cin>>t;
while(t--){
cin>>n>>k;
unsigned long long sum=0,ans=1,q;
for(int i=1;i<=n;i++){
int j=k;q=i;
j=j%c;
while(j>0){
if(j&1)
ans=ans*q%c;
j>>=1;
q=q*q%c;
}
sum=(sum+ans)%c;
ans=1;
}
cout<<sum<<endl;
sum=0;
}
return 0;
}
上一篇: 2019-12-15
下一篇: 2020-12-15