Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
150955 lrf820215 最优分解 C++ 解答错误 0 0 MS 636 KB 861 2024-06-10 10:06:24

Tests(0/10):


#include<iostream> #include<vector> using namespace std; //将n分解为若互不相同的自然数的和 使他们的乘积最大 #define Max 100005 int main(){ int n; cin>>n; if(n<4) { cout<<4<<endl; return 0; } int arr[Max]={}; int m=n; // arr[0]=2; int c=2; int i; for( i=0;c<=m;i++){ arr[i]=c; m-=c; c++; } int cou=i;//一共有几个数 //如果有剩余的数 就从后往前平均分配到前的数字上 int avg = m/cou; int ex = m%cou; while(i){ arr[i]+=avg; if(ex) { arr[i]+=1; ex--; } i--; } int mul=1; for(int i=0;i<cou;i++){ mul*=arr[i]; } cout<<mul; }


测评信息: