【CoreForcesラウンド#102C】ヘルプファーマー

C.ヘルプファーマーは、
質問の意味を簡略化する:既知A B N所与C = Nは、解決
[(+ 2)*( B + 2)*(C + 1) の最大値と最小値\] \
説明:暴力は、最小値を求めるために、A、B、Cを列挙します。
デフォルト
\ [最大値= 3 * 3 *(N + 1)\]

#include <cstdio>  
#include <queue>  
using namespace std;  
typedef long long ll;  
ll min(ll a,ll b){  
    return a<b?a:b;  
}  
ll max(ll a,ll b){  
    return a>b?a:b;  
}  
int main(){  
    ll N;  
    scanf("%lld",&N);  
    ll minn=3*3*(N+1);  
    for(ll a=1;a<=100000;a++){  
        if(N%a==0)  
        for(ll b=1;b<=10000;b++){  
            if(N%(a*b)==0){  
                ll c=N/a/b;  
                minn=min(minn,(min(min(a,b),c)+1)*(max(max(a,b),c)+2)*
                (a+b+c-min(min(a,b),c)-max(max(a,b),c)+2));  
            }  
        }  
    }  
    printf("%lld",minn-N);  
    printf(" %lld\n",3*3*(N+1)-N);  
    return 0;  
}

おすすめ

転載: www.cnblogs.com/Vagrant-ac/p/12149257.html