[CSP-S模拟测试]:表达式密码(模拟)

题目传送门(内部题87)


输入格式

从文件$expression.in$中读入数据。
输入一行,一个字符串$S$,表示原表达式,保证为合法表达式


输出格式

输出到文件$expression.out$中。
一个字符串,表示使表达式结果最大的符号添加方案。


题解

样例输入1:

10+20-30

样例输出1:

10+20-3+0

样例输入2:

-3-4-1

样例输出2:

-3-4-1

样例输入3:

-200+351-1600

样例输出3:

-2+0+0+351-1+600


数据范围与提示

设字符串长度为$|S|$
对于$30\%$的数据,满足$|S|\leqslant 20$
对于$50\%$的数据,满足表达式中的整数在$32$位整数$int$范围内
对于$100\%$的数据,满足$|S|\leqslant 100,000$


题解

模拟不多说,但是想谴责出题人……

明明$+0$和$-0$是一样的,为什么不写$SPJ$?

下发的大样例最后一个字符是$‘+‘$,逗我$KX$呢?

时间复杂度:$\Theta(|S|)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
char ch[100001];
int main()
{
	scanf("%s",ch+1);
	n=strlen(ch+1);
	for(int i=1;i<=n;i++)
	{
		putchar(ch[i]);
		if(ch[i]==‘-‘)
		{
			putchar(ch[i+1]);
			if(i+1==n)return 0;
			for(int j=i+2;j<=n;j++)
			{
				if(ch[j]==‘+‘||ch[j]==‘-‘)
				{
					i=j-1;
					break;
				}
				putchar(‘+‘);
				if(ch[j]!=‘0‘)
				{
					i=j-1;
					break;
				}
				putchar(ch[j]);
				if(j==n)return 0;
			}
		}
	}
	return 0;
}


rp++

原文地址:https://www.cnblogs.com/wzc521/p/11737337.html

时间: 2024-10-13 19:24:13

[CSP-S模拟测试]:表达式密码(模拟)的相关文章

[CSP-S模拟测试]:666(模拟)

题目描述 不忘初心. 小$\pi$假期在家无聊,打开了某弹幕直播网站. 突然,有一个精彩的镜头. 小$\pi$看到了满屏的$6$,其中,有$666$.也有$666666$.也有$6666666666...$ 小$\pi$也想发个弹幕,他打算发$n$个$6$. 然而当他按下第一个$6$时,键盘上$6$的键坏了. 这时,弹幕框里只有$1$个$6$. 键盘坏了什么的不要紧,先把弹幕发了才是正事. 于是小$\pi$打算用复制粘贴这类操作来生成这$n$个$6$. 具体的说,小$\pi$电脑的操作系统有唯一

[CSP-S模拟测试]:Rectangle(模拟+树状数组)

题目描述 平面上有$n$个点,第$i$个点的坐标为$X_i,Y_i$.对于其中的一个非空点集$S$,定义$f(S)$为一个最小矩形,满足:$\bullet$覆盖$S$中所有的点(在边界上也算覆盖):$\bullet$边与坐标轴平行.求所有不同的$f(S)$的面积和对$10^9+7$取模的结果.两个矩形被认为是不同的,当且仅当它们顶点坐标不同. 输入格式 从文件$rectangle.in$中读入数据.第一行一个整数$n$.接下来$n$行,每行两个整数$X_i,Y_i$. 输出格式 输出到文件$re

[CSP-S模拟测试]:真相(模拟)

题目传送门(内部题106) 输入格式 第一行为一个正整数$T$,表示数据组数. 接下来$T$组数据,每组数据第一行一个正整数$n$表示$OIer$,接下来$n$行,第$i$行表示编号为$i$的人所说的话,格式可以参考题面描述. 输出格式 对每组数据,如果这组数据里的$OIer$们说的话无论如何都会产生矛盾,那么就输出一行一个字符串$inconsistent$,否则输出一行一个字符串$consistent$. 样例 样例输入: 33++$ 33+-$ 31- 样例输出: consistentcon

2018冬令营模拟测试赛(五)

2018冬令营模拟测试赛(五) [Problem A][UOJ#154]列队 试题描述 picks 博士通过实验成功地得到了排列 \(A\),并根据这个回到了正确的过去.他在金星凌日之前顺利地与丘比签订了契约,成为了一名马猴烧酒. picks 博士可以使用魔法召唤很多很多的猴子与他一起战斗,但是当猴子的数目 \(n\) 太大的时候,训练猴子就变成了一个繁重的任务. 历经千辛万苦,猴子们终于学会了按照顺序排成一排.为了进一步训练,picks 博士打算设定一系列的指令,每一条指令 \(i\) 的效果

[考试反思]1002csp-s模拟测试56:凌乱

放假回来状态回升??(玩够了-但是稍困) T1打的不完全对,但是过掉了.很快的想到了二分吧喇叭啦.. 然后T2也挺快想出来了但是挂细节没发现,考试快结束的时候才发现出锅了. 改了过来是正解,但是出题人无良卡了线段树强制树状数组,T了一个子任务,卡常到飞起. T3暴力没什么问题. 卡常是一种习惯.要注意题目数据范围观察是否卡常. T1: 所有的决策都是一条一次函数. 分两类,斜率正或斜率非负. 如果第二类的直线里有在T=0时符合要求的,那么答案就是0,所以check(0)一下. 如果非负的直线都在

模拟测试(vj)

做这份模拟测试,已经崩溃了,英文看不懂,题意理解错.到结束了只a了第一题,人生陷入了低谷,于是花了一天的时间终于把不会的弄明白了,在这里写一份总结~ T1,简单的模拟,如果打枪打中一支鸟,将这个位置设为0,并向两边扩散,注意这个位置一定要有鸟. 代码~ #include<bits/stdc++.h> using namespace std; int a[30000]; int n,m; int main() { cin>>n; for(int i=1;i<=n;i++) ci

Android单元测试与模拟测试详解

测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabricator differential 发diff时提交需要执行的单元测试,在开发流程上就可以保证远端代码的稳定性). 2. 测什么? 一般单元测试: 列出想要测试覆盖的异常情况,进行验证. 性能测试. 模拟测试: 根据需求,测试用户真正在使用过程中,界面的反馈与显示以及一些依赖系统架构的组件的应用测

c语言:模拟三次密码输入。

模拟三次密码输入. 解:程序: #include<stdio.h> #include<windows.h> #include<string.h> int main() { int i; char *p = "123456"; char arr[10]; for (i = 0; i < 3; i++) { printf("请输入密码:"); scanf("%s",arr); if (strcmp(p,arr

微信在线信息模拟测试工具(基于Senparc.Weixin.MP)

目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具在线DEMO:http://weixin.senparc.com/SimulateTool Senparc.Weixin.MP是一个开源的微信SDK项目,地址:https://github.com/JeffreySu/WeiXinMPSDK (其中https://github.com/Jeffrey