乘积最大
#include<iostream> using namespace std; int n,m; long long s,a[41][41],f[41][7]; int main(){ ios::sync_with_stdio(false); cin>>n>>m>>s; for(int i=n;i>=1;i--){ a[i][i]=s%10; s/=10; } for(int i=2;i<=n;i++) for(int j=i-1;j>=1;j--) a[j][i]=(a[j][i-1]<<1)+(a[j][i-1]<<3)+a[i][i]; for(int i=1;i<=n;i++) f[i][0]=a[1][i]; for(int k=1;k<=m;k++) for(int i=k+1;i<=n;i++) for(int j=k;j<i;j++) f[i][k]=max(f[i][k],f[j][k-1]*a[j+1][i]); cout<<f[n][m]<<endl; return 0; }