HDU 6298 - Maximum Multiple [2018杭电多校联赛第一场 A](找规律)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6298

【题意】
给你一个正整数n,让你找出三个数字x,y,z且x,y,z都是n的因子,同时要满足x×y×z的值最大,输出这个最大的乘积(n<1e6)

【思路】
打表找规律,发现如果n能整除3就把n拆成n/3+n/3+n/3,其次如果n能整除4就拆分成n/4+n/4+n/2,其他情况都无解

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        ll n;
        scanf("%lld",&n);
        if(n%3==0){
            ll ans=(n/3)*(n/3)*(n/3);
            printf("%lld\n",ans);
        }
        else if(n%4==0){
            ll ans=(n/4)*(n/4)*(n/2);
            printf("%lld\n",ans);
        }
        else puts("-1");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xiao_k666/article/details/81264799
今日推荐