题面
题意:
给你一堆宏和一条表达式,问用宏去替换表达式再计算与先计算宏的值再代入表达式运算顺序是否有改变.
题解:
把所有常量和变量看成一种东西,那么每个宏和表达式可以看作:
anxn+an−1xn−1+⋯+am+1xm+1+amxm
a
n
x
n
+
a
n
−
1
x
n
−
1
+
⋯
+
a
m
+
1
x
m
+
1
+
a
m
x
m
其中 n∈Z,m∈Z且n≥m n ∈ Z , m ∈ Z 且 n ≥ m
然后对于每个出现在最终表达式中的宏,我们找到其中的其它宏,看一看它前后的运算符,设项数为 n−m+1 n − m + 1 :
前面是-或*且项数多于1项
前面是/且该宏中含有运算符
后面是*或/且项数多于一项
若出现以上情况则运算顺序会改变,否则不变
Code