题解 | 前缀平方和序列
前缀平方和序列
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;
}