洛谷笔记 - P1597 语句解析

条件写死了是好做……

假如,我是说假如,有一道题形式与此题相似,但是要以多位数形式给变量赋值……

那可真是一道好题。

做题的时候有参考题解 P1597 【语句解析】 - @化学小哥的做法,但是不知道为啥,我在输入结束后程序不给我输出并停止执行,但在我 Ctrl+C 干进程后能看到第一个变量已经赋好了值…… 搞不懂。

道阻且长啊。

题目背景

木有背景……

题目描述

一串长度不超过 255255 的 PASCAL 语言代码,只有 a,b,ca,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];。未赋值的变量值为 00 输出 a,b,ca,b,c 的值。

输入格式

一串符合语法的 PASCAL 语言,只有 a,b,ca,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 00

输出格式

输出 a,b,ca,b,c 最终的值。

样例 #1

样例输入 #1

1
a:=3;b:=4;c:=5;

样例输出 #1

1
3 4 5

提示

输入的 PASCAL 语言长度不超过 255255

代码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//P1597 语句解析
//https://www.luogu.com.cn/problem/P1597

//条件写死了是好做……
//假如,我是说假如,有一道题让给多位数赋值……那可真是一道好题……
//https://www.luogu.com.cn/record/87683311

#include<iostream>
using namespace std;
int n[3];
string cc;
int main(){
cin>>cc;
for(int i=0;i<cc.length();i++){
if(cc[i]=='='){
int op=cc[i-2]-'a';
n[op]=cc[i+1]>='0'&&cc[i+1]<='9'?cc[i+1]-'0':n[cc[i+1]-'a'];
}
}
printf("%d %d %d\n",n[0],n[1],n[2]);
return 0;
}