将一个位数为L(4≤L≤10)的自然数N拆成4段,使各段对应的数的乘积最小。输出这个最小乘积。
Format
Input
一个自然数N。
Output
一个整数,最小乘积。
输入数据
321427
输出数据
2268
思路:可以用暴力枚举来做,定义一个len来保存长度就行了
CODE:
#include<bits/stdc++.h>
using namespace std;
char a[11];
int fun(int l,int r) {//把a[l~r]之间的字符变成数字
int sum=0;
for(int i=l; i<=r; i++) {
sum=sum*10+a[i]-'0';
}
return sum;
}
int main() {
gets(a);
int min1=INT_MAX;
int len=strlen(a);
for(int i=1; i<=len-3; i++)
for(int j=i+1; j<=len-2; j++)
for(int k=j+1; k<=len-1; k++)
min1=min(min1,fun(0,i-1)*fun(i,j-1)*fun(j,k-1)*fun(k,len-1));
cout<<min1<<endl;
return 0;
}