SP9494的題解

Jerry_heng發表於2024-03-28

(一)

顯而易見。

\(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;
}