UVa10791 - Minimum Sum LCM

分析即为紫薯上的分析。

难点是发现当每个aipi作为一个单独的整数时才最优。。

答案就是将所有不同的 相同因子的积 相加即可

代码:

#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

#include<vector>

#include<stack>

#include<queue>

#include<map>

#include<set>

#include<list>

#include<string>

#include<cmath>

#include<sstream>

#include<ctime>

#define _PI acos(-1.0)

#define INF 1 << 10

#define esp 1e-6

typedef long long LL;

typedef unsigned long long ULL;

using namespace std;

/*===========================================

===========================================*/

LL v[1000];

LL vt=0;

int decPrime(LL n){

    LL m=(LL)sqrt(n+0.5);

    vt=0;

    for (LL i=2;i<=m&&n>1;i++){

        if (!(n%i)){

            LL tmp=1;

            while (!(n%i)&&n>1){

                tmp*=i;n/=i;

            }

            v[vt++]=tmp;

        }

    }

    if (n>1) v[vt++]=n;

}

LL n;

int T=0;

int main(){

    while (cin>>n&&n){

        T++;

        LL ans=0;

        decPrime(n);

        if (vt==0||vt==1) ans=n+1;

        else for(int i=0; i<vt; i++)

                ans+=v[i];

        cout<<"Case "<<T<<": ";

        cout<<ans<<endl;

    }

}

 

你可能感兴趣的:(ini)