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; }