牛客假日團隊賽10 L 乘積最大 (dp,大數)

2022-05-03 12:39:28 字數 2622 閱讀 8356

乘積最大

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述

今年是國際數學聯盟確定的「2000——世界數學年」,又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目:

設有乙個長度為n的數字串,要求選手使用k個乘號將它分成k+1個部分,找出一種分法,使得這k+1個部分的乘積能夠為最大。

同時,為了幫助選手能夠正確理解題意,主持人還舉了如下的乙個例子:

有乙個數字串:312, 當n=3,k=1時會有以下兩種分法:

3*12=36

312=62

這時,符合題目要求的結果是:312=62

現在,請你幫助你的好朋友xz設計乙個程式,求得正確的答案。

輸入描述:

第一行共有2個自然數n,k(6 ≤ n ≤ 40,1 ≤ k ≤ 6)

第二行是乙個長度為n的數字串。

輸出描述:

輸出所求得的最大乘積(乙個自然數)。

示例1輸入

複製4 2

1231

輸出複製

62思路:

定義dp狀態為 dp[i][j] 代表 到第i個數字,用了j個乘號,獲得的最大乘積。

由於長度是40,所以肯定是會爆longlong的,用大數模板即可。

細節見**:

#include #include #include #include #include #include #include #include #include #include #include #define all(x) (x).begin(), (x).end()

#define sz(a) int(a.size())

#define all(a) a.begin(), a.end()

#define rep(i,x,n) for(int i=x;i#define pll pair#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)

#define ms0(x) memset((x), 0, sizeof((x)))

#define msc0(x) memset((x), '\0', sizeof((x)))

#define pb push_back

#define mp make_pair

#define fi first

#define se second

#define eps 1e-6

#define gg(x) getint(&x)

#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<1 && !s[len-1]) len--;

}bign operator * (const bign &b) //*

}for(int i = 0; i < c.len; i++)

c.clean();

return c;

}bign operator *= (const bign &b)

bign operator - (const bign &b)

c.s[c.len++] = x;

}c.clean();

return c;

}bign operator -= (const bign &b)

bign operator / (const bign &b)

}c.len = len;

c.clean();

return c;

}bign operator /= (const bign &b)

bign operator % (const bign &b)

bign operator %= (const bign &b)

bool operator < (const bign &b)

return false;

}bool operator > (const bign &b)

return false;

}bool operator == (const bign &b)

bool operator != (const bign &b)

bool operator <= (const bign &b)

bool operator >= (const bign &b)

string str() const

};istream& operator >> (istream &in, bign &x)

ostream& operator << (ostream &out, const bign &x)

string a;

int n,k;

bign dp[41][7];

bign temp;

int main()

}for(int i=0;i<=k;++i)

for(int i=1;i<=n;++i)}}

cout<= '0' && ch <= '9')

}else

}}

牛客假日團隊賽 A 乘積最大

今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...

牛客假日團隊賽9 A 乘積最大

今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...

牛客假日團隊賽6 D 迷路的牛

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld farmer john的三頭獲獎奶牛bessie elsie和mildred,總是會迷路走到農場上遙遠的地方去!他需要你幫助將她們一起趕回來。農場的草地大體是一塊狹長的...