社区讨论

[NOIP2000 提高组] 乘积最大

P1018[NOIP 2000 提高组] 乘积最大参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo8wcvqv
此快照首次捕获于
2023/10/28 01:38
2 年前
此快照最后确认于
2023/10/28 01:38
2 年前
查看原帖
这道题怎么加高精度???
CPP
/*****************************************
备注:
******************************************/
#include <queue>
#include <math.h>
#include <stack>
#include <stdio.h>
#include <iostream>
#include <vector>
#include <iomanip>
#include <string.h>
#include <algorithm>
using namespace std;
#define int long long
const int N = 2000;
const int INF = 100003;
int a[1001][1001],f[1001][1001];
int s;
int n,m;
int max(int a, int b)
{
    return a>b?a:b;
}
signed main(){
    cin>>n>>m;
    cin>>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]*10+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;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...