数字游戏,小明有一个数字num,初始值num=1

数字游戏
描述

小明有一个数字num,初始值:num=1。
现给出一个长度为n的序列s,对于序列的第i 个元素si​,小明可以进行下面的操作之一:

num = num+si;

num = num*si;
请求出num的最大值,并输出这个最大值除987654321的余数。

day10-01.zip

输入
第一行包含一个整数T(1≤T≤100)表示数据组数。

对于每组数据:

第一行包含一个整数n(1≤n≤10^5),表示序列的长度。

第二行包含n 个整数s1…sn(0≤si≤10^9)表示该序列。

输出
T行,每行一个整数表示结果

输入样例 1

3
2
1 1
1
0
1
987654321
输出样例 1

2
0
0

【以下回答由 GPT 生成】

首先,我们可以使用动态规划来解决这个问题。

我们定义一个数组dp,其中dp[i]表示当num为i时的最大值。

对于序列中的每个元素si,我们可以进行两种操作,即将num增加si或者将num乘以si。因此,对于每个元素si,我们需要计算两种操作分别对num的影响,并取其中的最大值。即:

dp[i] = max(dp[i], dp[i+si] + 1)
dp[i] = max(dp[i], dp[i * si] + 1)

我们可以从左到右遍历序列s,依次更新dp数组中的元素。

最后,我们需要找到dp数组中的最大值,并将其除以987654321取余数,即为所求的答案。

下面是具体的代码实现:



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

数字游戏
描述

小明有一个数字num,初始值:num=0。
现给出一个长度为n的序列s,对于序列的第i 个元素si?,小明可以进行下面的操作之一:

num = num+si;

num = num*si;
请求出num的最大值,并输出这个最大值除987654321的余数。

输入
第一行包含一个整数T(1≤T≤100)表示数据组数。

对于每组数据:

第一行包含一个整数n(1≤n≤10^5),表示序列的长度。

第二行包含n 个整数s1…sn(0≤si≤10^9)表示该序列。

输出
T行,每行一个整数表示结果