题解 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