HX1254I. 位运算表达式

提交2 通过2
通过率100%
时间限制1000ms
内存限制128MiB

题目描述

题目描述

给定一个表达式,只包含 |& 和数字,| 表示按位或,& 表示按位与。

“&” 的优先级比 “|” 高,所以计算时要遵循以下规则:

(1)同时有“|”和“&”的,先算最左边的“&”。

(2)只有“|”或者只有“&”的,先算最左边的“|”或“&”。

我们不止要计算表达式的值,还要计算最高的比特位翻转的次数。我们保证表达式中所有数都是 8 位无符号整数,范围是 0∼255,其中 0∼127 的最高位是 0,128∼255 的最高位是 1。

对于每次运算,如果计算结果的最高位和运算符左边的运算数的最高位不同,那么就记录一次翻转。

输出表达式的值和计算过程中最高位的翻转次数。

输入格式

一行字符串,表示要计算的表达式。

输出格式

输出两个整数,分别表示表达式的值和计算过程中最高位的翻转次数。

52|129&0
52 1

提示

首先计算 129&0 计算结果是 0,最高位和运算符左边的 129 不同,翻转一次。

然后计算 52|0 计算结果是 52,最高位和运算符左边的 52 相同,不翻转。

输入样例 #2

0|128

输出样例 #2

128 1

输入样例 #3

255&127

输出样例 #3

127 1

数据范围

对于 100% 的数据,0≤0\le 输入的字符序列长度 ≤100000\le 100000。

出现的每个整数都在 0∼255 之内。