简单的逆元,还有等比数列求和公式,需要注意的是a=1时,特殊情况的
考虑
#include<cstdio>
#define M 1000000007
#define LL long long
LL quick_pow(LL a,LL n)
{
LL ans=1;
while(n)
{
if(n&1)
ans=ans*a%M;
a=a*a%M;
n>>=1;
}
return ans;
}
int main()
{
LL t;
scanf("%lld",&t);
while(t--)
{
LL a,n;
scanf("%lld%lld",&a,&n);
LL ans;
if(a==1)
{
ans=a*n%M;
printf("%lld\n",ans);
continue;
}
LL d=quick_pow(1-a,M-2);
LL c=quick_pow(a,n+1);
ans=(a-c-M)*d%M;
printf("%lld\n",ans);
}
return 0;
}