题解 CF952F 【2 + 2 != 4】
为CF水题写题解
首先这道题没有翻译,是十分的烦(那是因为不需要),因为这道题是一道愚人节题目!出题人就是从BF Calculator 这道题得到的灵感,具体运算规则就是从brainfuck这种语言来的
先说2+2=-46这个样例吧,首先2的确等于2,但‘+’-‘0’=-5,要把这个-5代入下一步的运算中去,即2+-5*10+2=-46
如果还没有懂,就在代码中去看
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
char ch=getchar();
int x=0,f=1;
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
char a[100];
int len;
long long res=0,cur=0;
int sign=1;
int main()
{
scanf("%s",a);
len=strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]=='-'||a[i]=='+')//每一次运算都是以运算符为
{ //一个节点
res+=sign*cur;
cur=0;
}
if(a[i]=='-')//如果为-,sign变为-1
sign=-1;
if(a[i]=='+')//如果为+,sign变为+1
sign=1;
cur=cur*10+a[i]-'0';//将这一节点的值*10后加上该点自己的值
}
res+=sign*cur;//这一步要注意,因为不加的话最后一个节点的值就加不了
printf("%lld",res);
return 0;
}
毒瘤CF