Project Euler 638 题解

q-analog,老玩家集体起立!

image

这也就是说:

\[\binom{n+m}{n}_q=\sum_{\pi\in L_{n,m}}q^{area(\pi)} \]

结束!

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e9+7,maxn=2e7+5;
int qp(int a,int b,int p=mod){
	int res=1;
	while(b){
		if(b&1)res=(res*a)%p;
		a=(a*a)%p;
		b>>=1;
	}
	return res;
}
int fac[maxn];
int C(int n,int m,int q){
	fac[1]=1;int I=qp(q-1,mod-2);
	for(int i=2,z=q;i<=n;i++){
		z=z*q%mod;
		int x=(z-1)*I%mod;
		if(q==1)x=i;
		fac[i]=fac[i-1]*x%mod;
	}
	return fac[n]*qp(fac[m],mod-2,mod)%mod*qp(fac[n-m],mod-2,mod)%mod;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int K,ans=0;cin>>K;
	for(int i=1;i<=K;i++)(ans+=C((pow(10,i)+i)*2,pow(10,i)+i,i))%=mod;
	cout<<ans<<endl;
	return 0;
}
posted @ 2024-10-15 21:16  British_Union  阅读(9)  评论(3编辑  收藏  举报