2015-11-11 hdu新生赛 C题(结束后一发AC)

Problem C

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/65536K (Java/Other)
Total Submission(s) : 77   Accepted Submission(s) : 35
Font: Times New Roman | Verdana | Georgia
Font Size:  

Problem Description

姚班长喜欢挑战难题,但他讨厌英文。最近,他偶然在OJ上看到一道中文题,在欣喜若狂的同时,却发现题目是如此之难。所以,他想和大家一起探讨,题目是这样的:
在程序设计语言里,我们经常要用到算术运算符。同时,我们也知道计算机是通过指令来进行运算的。对于给定指令,你能否得到其计算结果呢?

Input

每行输入n,m,其中n代表变量初始值,m(1<=m<=100)为指令条数,指令长度不超过200。接下来是m条指令,指令有五种形式:合法的有:++,--,+=v,-=v(v为一个数字),还有一种是不合法的,一共有这些不合法情况:==100, -=, +=, -+, +-,++100,--100,对于这种指令则忽视它。

Output

输出n最后的值。(数据保证n的最后值不超过2^31-1)

Sample Input

1 2
++
++

1 4
+=100
-=1
-+
+=

Sample Output

3
100
 
 
————————————————————————————————————————————————————————————————————
 
 
(ps:字符串一直有点渣。。改了好几遍,好在一发AC还爽一点)
1.scanf直接读字符和数字
2.判断+=后面是不是负数(确实没想到)其他的应该挺水吧。。。
 
 
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	int n,m,i,v,flag;
	char a[100];
	while(~scanf("%d %d",&n,&m)){
	while(m--)
	{
		flag=0;
		v=0;
		scanf("%s",a);
		if(a[2]=='-') flag=1;
		for(i=(flag?3:2);a[i]!=0;i++)
		v=v*10,v+=(a[i]-'0');
		if(a[0]=='+'&&a[1]=='+'&&v==0) n++;
		if(a[0]=='-'&&a[1]=='-'&&v==0) n--;
		if(a[0]=='+'&&a[1]=='=') 
		{
			if(flag==1) 	n-=v;
			else n+=v;
		}
		
		if(a[0]=='-'&&a[1]=='=') 
		{
			if(flag==1) 
			{
				
				n+=v;
			}
			else 
			{
				n-=v;
			}
		}
	}
			printf("%d\n",n);
	return 0;
}
 
 
大一刚接触ACM,方法不一定好,希望大神指点奋斗,不喜勿喷。
 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值