小朋友的数字


题解:

最大字段和类似于DP,判断加上本次的数是否划算,另外用一个MAXN保存目前最大的字段和
如果加上本次的数不划算的话就将特征值赋为之前的最大字段和。对于分数,我们可以发现
分数总是一个不下降序列,因此,如果上一个的特征是小于0的,那么加上他就不划算,反之

则划算,加上它,最后我们就能得到一个不下降序列。

代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<cctype>
#include<cmath>
#include<map>
#include<climits>
#define MAXA 1000005
#define MIN -1500000000
using namespace std;
typedef long long LL;
bool isFirst;
LL n,MOD;
LL temp[MAXA],Tezheng[MAXA],Fenshu[MAXA],hand[MAXA],MAXN;
int main() {
	scanf("%lld %lld",&n,&MOD);
	for(int i=1;i<=n;i++)
	    scanf("%lld",&hand[i]);
	temp[1] = Tezheng[1] = MAXN = hand[1];
	for(int i=2;i<=n;i++) {
		temp[i] = max(temp[i-1] + hand[i],hand[i]);
		Tezheng[i] = max(MAXN,temp[i]);
		MAXN = Tezheng[i];
	}
	Fenshu[1] = Tezheng[1];
	Fenshu[2] = Tezheng[1] + Fenshu[1];
	MAXN = Fenshu[2];
	isFirst = Fenshu[1] <= Fenshu[2] ? false : true;
	for(int i=3;i<=n;i++) {
		if(Tezheng[i-1] > 0) {
			Fenshu[i] = Fenshu[i-1] + Tezheng[i-1];
			isFirst = Fenshu[i] > Fenshu[1] ? false : true;
			if(Fenshu[i] > 10000000000)
			   Fenshu[i] %= MOD;
		}
		else
		  Fenshu[i] = Fenshu[2];
	}
	if(isFirst)
		printf("%lld",Fenshu[1] % MOD);
	else
	    printf("%lld",Fenshu[n] % MOD);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 程序,可以进行加减乘除运算,并给出正确答案。 好的,我可以帮您编写一个小朋友玩的Python程序,它可以进行加减乘除运算并给出正确的答案。以下是程序代码: ```python print("欢迎使用小朋友计算器!") print("请选择运算符号:+、-、*、/") operator = input() print("请输入第一个数字:") num1 = int(input()) print("请输入第二个数字:") num2 = int(input()) if operator == "+": result = num1 + num2 elif operator == "-": result = num1 - num2 elif operator == "*": result = num1 * num2 elif operator == "/": result = num1 / num2 print("运算结果为:", result) ``` 使用方法: 1. 打开Python IDLE或命令行窗口 2. 将上述代码复制到窗口中 3. 运行代码 4. 根据提示输入运算符及数字,即可得到计算结果。 ### 回答2: 小朋友可以玩的Python游戏是猜数字游戏。首先,我们需要先生成一个随机数作为答案,然后让小朋友进行猜测。小朋友每猜一次,我们都会根据他的猜测给出相应的提示,直到他猜对为止。 我们可以使用Python中的random模块来生成随机数,使用input函数来接收小朋友的猜测。在每次猜测后,我们可以通过比较小朋友的猜测和答案的大小关系,给出一些提示,比如告诉他猜的数字太大了还是太小了。 下面是一个示例代码: ```python import random answer = random.randint(1, 100) # 生成1到100之间的随机整数作为答案 while True: guess = int(input("请猜一个1到100之间的数字:")) if guess == answer: print("恭喜你,猜对了!") break elif guess < answer: print("猜的数字太小了,请再试一次。") else: print("猜的数字太大了,请再试一次。") ``` 小朋友可以不断地输入猜测,直到猜对为止。当猜对时,程序会输出一条恭喜的提示,并结束游戏。 通过这个小游戏,小朋友可以锻炼自己的逻辑思维和数学能力,同时也能加深对Python语言的理解和熟练度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值