整数拆段(c++)

将一个位数为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;
}

猜你喜欢

转载自blog.csdn.net/weixin_55599629/article/details/119977182
今日推荐