题解 | 前缀平方和序列

前缀平方和序列

https://www.nowcoder.com/practice/51101e7b91064da8a10dbfd8c9217119

#include<bits/stdc++.h>
using namespace std;
#define int long long

const int P=1e9+7;

int n,x;

int power(int a,int b,int p){
	int ans=1;
	a=a%p;
	while(b>0){
		if(b&1==1){
			ans=ans*a%p;
		}
		a=a*a%p;
		b=b>>1;
	}
	return ans;
}

int ji_cheng(int a,int p){
	int ans=1;
	for(int i=1;i<=a;i++){
		ans=ans*i%p;
	}
	return ans;
}

void solve(){
	
	int x_sqrt=sqrt(x);
	
	if(x_sqrt<n){
		cout<<0<<endl;
		return;
	}
	
	int T_jicheng=ji_cheng(x_sqrt,P);
	int Tn_jicheng=ji_cheng(x_sqrt-n,P);
	int n_jicheng=ji_cheng(n,P);

	int zi_jicheng=power(Tn_jicheng*n_jicheng,P-2,P);
	
	int res=zi_jicheng*T_jicheng%P;
	
	cout<<res<<endl;	
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>x;
	
	solve();
	
	
    return 0;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务