首页 > Web开发 > 详细

Codeforces Round #539--1113B - Sasha and Magnetic Machines

时间:2019-02-22 12:50:06      阅读:200      评论:0      收藏:0      [点我收藏+]

https://codeforces.com/contest/1113/problem/B

思想不难,但是在比较大小的时候,我选择了很笨的方法,我用两个数变化之后的差值大小来进行选择,然后最后再进行数组的更改,最后求和。

实际上,可以先求和,在每次运算之前,减去两个数,然后再把处理后的两个数加上,比较和的大小。

#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> num;
vector<int> isPrime(int d){
    vector<int> res;
    for(int i=1;i*i<=d;i++){
        if(d%i==0){
            res.push_back(i);
            if(i!=d/i)
                res.push_back(d/i);
        }
    }
    return res;
}
int main(){
    cin>>n;
    num.resize(n);
    for(int i=0;i<n;i++)
        cin>>num[i];
    int sum=accumulate(num.begin(),num.end(),0);
    int minNum=*min_element(num.begin(),num.end());
    int ress=sum;
    for(int i=0;i<num.size();i++){
        vector<int> res=isPrime(num[i]);
        for(int j=0;j<res.size();j++){
            int c=res[j];
            int tmpSum=sum-minNum-num[i];
            tmpSum+=minNum*c+num[i]/c;
            ress=min(ress,tmpSum);
        }    
    }
    cout<<ress<<endl;
    return 0;
}

 

Codeforces Round #539--1113B - Sasha and Magnetic Machines

原文:https://www.cnblogs.com/albert67/p/10417674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!