2 条题解

  • 0
    @ 2025-10-8 16:48:40
    #include<bits/stdc++.h>
    using namespace std;
    __int128 f[50][10];
    char s[50];
    template<typename T>void qw(T x)
    {
    	if(x>9)qw(x/10);
    	putchar(x%10+48);
    }
    int main()
    {
        int n,k;scanf("%d%d",&n,&k);k++;
        scanf("%s",s+1);
        for(int i=1;i<=n;i++) f[i][1]=f[i-1][1]*10+s[i]-48;
        for(int ki=2;ki<=k;ki++)
        {
            for(int R=ki;R<=n;R++)
            {
                for(int L=R;L>=ki;L--)  
                {
                    __int128 t=0;for(int j=L;j<=R;j++) t=t*10+s[j]-48;
                    f[R][ki] = max( f[R][ki],  f[L-1][ki-1]*t );
                }
            }
        }
        qw(f[n][k]);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:32
      #include<bits/stdc++.h>
      using namespace std;
      __int128 f[50][10];
      char s[50];
      template<typename T>void qw(T x)
      {
      	if(x>9)qw(x/10);
      	putchar(x%10+48);
      }
      int main()
      {
          int n,k;scanf("%d%d",&n,&k);k++;
          scanf("%s",s+1);
          for(int i=1;i<=n;i++) f[i][1]=f[i-1][1]*10+s[i]-48;
          for(int ki=2;ki<=k;ki++)
          {
              for(int R=ki;R<=n;R++)
              {
                  for(int L=R;L>=ki;L--)  
                  {
                      __int128 t=0;for(int j=L;j<=R;j++) t=t*10+s[j]-48;
                      f[R][ki] = max( f[R][ki] ,  f[L-1][ki-1]*t );
                  }
              }
          }
          qw(f[n][k]);
          return 0;
      }
      • 1

      *【动态规划:区间一维一边推】乘积最大

      信息

      ID
      145
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      递交数
      114
      已通过
      43
      上传者