最大k乘积问题
问题描述:设X是一个n位十进制整数,如果将X划分为K段,则可得到K个整数,这K个整数的乘积称为X的一个K乘积。请设计算法并编程实现,对于给定的X
和K,求出X的最大K乘积。
输入:X,K,n
输出:X的最大K乘积。
源代码:
#include <iostream>
using namespace std;
int MAX=0;
void Max(int X, int K, int n,int m)
{
int w=1;
if(K==0&&X!=0)
return;
if(X==0&&MAX<m)
{
MAX=m;
return;
}
for(int i=1;i<=n;i++)
{
w*=10;
if(K-1>n-i)
return;
else
Max(X/w,K-1,n-i,m*(X%w));
}
}
int main()
{
int X,K,n;
int w=1;
cout<<"请输入X值:";
cin>>X;
cout<<"请输入K值(将X划分为K段):";
cin>>K;
cout<<"请输入n值(n为X值的位数):";
cin>>n;
Max(X,K,n,1);
cout<<"X的最大K乘积为:";
cout<<MAX<<endl;
return 0;
}
截图: