码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-25 13:05:10      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:测试   str   color   输出   ant   sla   ||   一个   复杂度   

题目传送门(内部题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++

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

标签:测试   str   color   输出   ant   sla   ||   一个   复杂度   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!