社区讨论

萌新初学c++,不会数学,求大哥哥大姐姐调调

P1445[Violet] 樱花参与者 4已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lo18fz13
此快照首次捕获于
2023/10/22 16:54
2 年前
此快照最后确认于
2023/11/02 16:44
2 年前
查看原帖
RT,球调简单数学,马蜂良好
CPP
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
void openfile(){
    freopen("equation.in","r",stdin);
    freopen("equation.out","w",stdout);
}//考试时写的,忘删了
ull n,pri[1000005],vis[1000005],l,cnt;
ull c[1000005],ans=1;
const ull mod=1e9+7;
void ispri(ull x){
    for(ull i=2;i<=n;i++){
        if(vis[i]==0){
            vis[i]=i;
            pri[++l]=i;
        }
        for(ull j=1;j<=l;j++){
            if(pri[j]<=vis[i]&&pri[j]<=n/i){
                vis[i*pri[j]]=pri[j];
            }
        }
    }
}//欧拉筛
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n;
    ispri(n);
    for(ull i=2;i<=n;i++){
		cnt=1;
        if(vis[i]!=i){
            continue;
        }
		while(cnt<=n){
			cnt*=i;
            c[i]+=n/cnt;
		}
	}  
	for(ull i=2;i<=n;i++){
		ans=(ans*(2*c[i]+1))%mod;
	}//唯一分解定理
    cout<<ans<<"\n";
    return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...