啊求debug
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/12/14 23:41
  • 上次更新2023/11/3 22:01:16
查看原帖
啊求debug
418733
封禁用户楼主2021/12/14 23:41
#include<bits/stdc++.h>
using namespace std;
long long n;
long long a;
int prme[65005];
long long cnt=0;
long long f[65005];
void getprme() {
	for(long long i=2; i*i<=45005; i++) {
		if(!f[i]) {
			for(long long j=i*i; j<=45005; j+=i) {
				f[j]=1;
			}
		}
	}
	for(long long i=2; i<=45005; i++) {
		if(!f[i]) {
			prme[++cnt]=i;
		}
	}
}
int main(){
    getprme();
    memset(f,0,sizeof f);
    scanf("%lld",&n);
    for(int i=0;i<n;++i){
        scanf("%lld",&a);
        if(a==1) continue ;
        for(int j=1;j<=cnt&&prme[j]<=a;++j){
            while(a%prme[j]==0){
                ++f[j];
                a/=prme[j];
            }
        }
        if(a!=1) prme[++cnt]=a,f[cnt]=1;
    }
    long long ans=1;
    for(int i=1;i<=cnt;++i){
        if(f[i]){
            long long sum=prme[i]+1;
			long long k=prme[i];
            for(int j=2;j<=f[i];++j){
                k=(k*prme[i])%1000000007;
                sum=(sum+k)%1000000007;
            }
            ans=(ans*sum)%1000000007;
        }
    }
    printf("%lld",ans);
    return 0;
}

调了一晚上

题目描述:
求约数之和
时间限制:1秒        内存限制:128M
题目描述
给定n个正整数ai,请你输出这些数的乘积的约数之和,答案对10^9+7取模。

输入描述
第一行包含整数n。

接下来n行,每行包含一个整数ai。

输出描述
输出一个整数,表示所给正整数的乘积的约数之和,答案需对10^9+7取模。

样例
输入
3
2
6
8
输出
252
提示
【数据范围】

1≤n≤100

1≤ai≤2∗10^9
2021/12/14 23:41
加载中...