10分求助
  • 板块P9148 除法题
  • 楼主BPG_ning
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/12 20:14
  • 上次更新2023/10/23 21:43:35
查看原帖
10分求助
551803
BPG_ning楼主2023/3/12 20:14
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=5010;
const LL mod=(1LL<<32);
LL n,a[N],sum[N<<2];
LL ans=0;
int main(){
    ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
	freopen("nzq.in","r",stdin);
	freopen("nzq.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n-2;i++){
		memset(sum,0,sizeof(sum));
		for(int j=1;j<=n;j++) sum[a[j]]+=a[j]/a[i];
		for(int j=1;j<=N+N;j++) sum[j]+=sum[j-1],sum[j]%=mod;
		for(int j=i+1;j<=n-1;j++){
			for(int k=1;k<=N/a[j]+1;k++){
				LL u=0;
				if(k==1) u=a[j]/a[i];
//				cout<<i<<' '<<j<<' '<<k<<' '<<sum[a[j]*(k+1)-1]-sum[a[j]*k-1]-u<<endl;
				ans=ans+(a[j]/a[i])*k%mod*(sum[a[j]*(k+1)-1]-sum[a[j]*k-1]-u)%mod;
				ans%=mod;
			}
		}
	}
	cout<<ans<<endl;
    return 0;
}
2023/3/12 20:14
加载中...