#include <bits/stdc++.h>
using namespace std;
using ll=long long;
struct node{
int ch0, ch1;
};
const int N=1e6+13;
ll res=0;
int n;
ll a[N];
ll ans[N];
ll mx;
void scan(){
cin >> n;
for(int i=1; i<=n; i++){
cin >> a[i];
}
sort(a+1, a+n+1);
n=unique(a+1, a+n+1)-a-1;
mx=a[n];
//for(int i=1; i<=n; i++){
// cout << a[i] << '\n';
//}
}
void solve(){
fill(ans+2, ans+n+1, 1e18);
for(int i=1; i<n; i++){
for(int j=a[i]; j<=mx; j+=a[i]){
int p=lower_bound(a+1, a+n+1, j)-a;
if(j==a[i]) p=lower_bound(a+1, a+n+1, j+1)-a;
if(1<=p && p<=n){
//cerr << i << ' ' << j << ' ' << p << ' ' << a[p]-j << '\n';
ans[p]=min(ans[p], a[p]-j);
ans[i]=min(ans[i], a[p]-j);
}
}
}
for(int i=2; i<=n; i++){
res+=ans[i];
//cerr << ans[i] << '\n';
}
cout << res;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
scan();
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |