時間限制:
1000 ms | 記憶體限制:
65535 kb
難度: 3
描述 問題是我們經常見到的整數劃分,給出兩個整數 n , m ,要求在 n 中加入m - 1 個乘號,將n分成m段,求出這m段的最大乘積
輸入
第一行是乙個整數t,表示有t組測試資料
接下來t行,每行有兩個正整數 n,m ( 1<= n < 10^19, 0 < m <= n的位數);
輸出輸出每組測試樣例結果為乙個整數佔一行
樣例輸入
2111 2
1111 2
樣例輸出
11121
想法:首先我們對輸入的n是按位進行操作,所以我們把n大數字輸入到字元陣列s【】中;
然後用a【i】【j】儲存s【】中從i位到j位合成的數,而dp【i】【j】儲存0到i位且中間用了j次*的數
給出動態轉移方程: dp[i][j]=max(dp[i][j],dp[k][j-1]*a[k+1][i]);
核心**:
for(i=0;i注意:j-2**:
#include
#include
#include
char s[25];
long long a[25][25];
long long dp[25][25];
long long max(long long x,long long y)
int main()
{int n;
scanf("%d",&n);
while(n--)
{int m;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
memset(s,0,sizeof(s));
scanf("%s %d",s,&m);
int i,j,k,len;
len=strlen(s);
for(i=0;i
南陽理工746整數劃分 區間dp
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積 輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0...
南陽理工acm 176 整數劃分(二)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入 第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m 100 ...
南陽理工oj 整數劃分(DP)
問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0 m n的位數 輸出 輸出每組測試樣例結果為乙個整數佔一行 樣例輸入 2 ...