UOJ#21. 【UR #1】缩进优化 数学
十分轻松的一道数学题.
这个整除非常不好搞.
但是呢,我们发现 $a[i]$ mod $x$ 可以等价于 $a[i]-\frac{a[i]}{x} \times x$,我们就构造出了公因式,然后推一推就没了.
code:
#include <bits/stdc++.h>
#define ll long long
#define N 1000008
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int a[N<<1],sum[N<<1],cnt[N<<1],n,mx;
int main()
{
// setIO("input");
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]),++cnt[a[i]],sum[a[i]]++,mx=max(mx,a[i]);
for(int i=mx;i>=0;--i) sum[i]+=sum[i+1];
ll sm=0,ans;
for(int i=1;i<=n;++i) sm+=(ll)a[i];
ans=sm;
for(ll x=1;x<=mx;++x)
{
ll cur=sm,s2=0;
for(ll j=0;j<=mx;j+=x)
{
s2+=(ll)j/x*(sum[(int)j]-sum[(int)j+x]);
}
cur-=s2*(x-1);
ans=min(ans,cur);
}
printf("%lld\n",ans);
return 0;
}

浙公网安备 33010602011771号