文件详细信息

下载本文件

本文件的大小为 587 字节。

#include<cstdio>
typedef long long ll;
const ll P=10000007;
ll qpow(ll a,ll x){
	if(x==0)return 1%P;
	ll ans=1;
	while(x){
		if(x&1)ans=ans*a%P;
		a=a*a%P;
		x>>=1;
	}
	return ans;
}
ll n,C[64][64];
int cnt[64];
int main(){
	for(int i=0;i<64;i++){
		C[i][0]=1;
		for(int j=1;j<=i;j++)C[i][j]=(C[i-1][j-1]+C[i-1][j])%9988440;
	}
	scanf("%lld",&n);
	n++;
	int popcnt=0;
	for(int i=60;i>=0;i--){
		if(n&(1ll<<i)){
			n^=1ll<<i;
			for(int j=0;j<=i;j++)cnt[j+popcnt]+=C[i][j];
			popcnt++;
		}
	}
	ll ans=1;
	for(int i=2;i<64;i++)ans=ans*qpow(i,cnt[i])%P;
	printf("%lld\n",ans);
	return 0;
}