(一)
顯而易見。
\(Z_n+Z_{n-1}-2Z_{n-2}\)
\(=(Z_{n}-Z_{n-2})+(Z_{n-1}-Z_{n-2})\)
\(=n^n+n^k+2\times (n-1)^{n-1}+2\times(n-1)^k\)。
然後套進快速冪模板。
(二)
AC 程式碼。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
const int md=1e7+7;
int solve(int a,int b){
int ans=1;
while(b){
if(b&1)ans=ans*a%md;
a=a*a%md;
b>>=1;
}
return ans;
}
signed main(){
while(scanf("%lld%lld",&n,&k)&&(n||k)){
printf("%lld\n",((solve(n-1,n-1)*2+solve(n-1,k)*2)%md+solve(n,k)+solve(n,n))%md);
}
return 0;
}