码迷,mamicode.com
首页 > 其他好文 > 详细

E2. Send Boxes to Alice (Hard Version)

时间:2019-12-07 21:35:33      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:cal   targe   click   color   false   net   lse   min   span   

秒的有点难以理解:https://blog.csdn.net/weixin_42868863/article/details/103200132

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e18+7;
const ll N=1E6+7;
ll arr[N];
ll n;
ll cal(ll x){
    ll sum=0,s=0;
    for(ll i=1;i<=n;i++){
        s=(s+arr[i])%x;
        sum+=min(s,x-s);
    }
    return sum;
}
int main(){
    ios::sync_with_stdio(0);
    cin>>n;
    ll cnt=0;
    for(ll i=1;i<=n;i++){
        cin>>arr[i];
        cnt+=arr[i];
    }
    if(cnt==1){
        cout<<-1<<endl;
        return 0;
    }
    if(n==1){
        cout<<0<<endl;
        return 0;
    }
    ll m=sqrt(cnt);
    ll sum=INF;
    for(ll i=2;i<=m;i++){
        if(cnt%i==0){
            sum=min(sum,cal(i));
            while(cnt%i==0) cnt/=i;
        }
    }
    if(cnt!=1) sum=min(sum,cal(cnt));
    cout<<sum<<endl;
    return 0;
}

 

E2. Send Boxes to Alice (Hard Version)

标签:cal   targe   click   color   false   net   lse   min   span   

原文地址:https://www.cnblogs.com/Accepting/p/12003086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!