题目描述
向一个空栈压入正整数,每当压入一个整数时,执行以下规则(设:栈顶至栈底整数依次编号为n1、n2…nx,n1为最新压入的整数)
1.如果n1=n2,则n1、n2全部出栈,压入新数据m(m=2×n1);
2.如果n1=n2+…+ny(y的范国为[3,x]) ,则n1、n2…ny全部出栈,压入新数据m(m=2×n1);
3.如果上述规则都不满足,则不做操作
如: 依次向栈压入6、1、2、3,当压入2时,栈顶至栈底依次为[2、1、6];当压入3时,3=2+1,3、2、1全部出栈,重新入栈整数6(此时n1=3,因此m=2×3=6),此时栈顶至栈底依次为[6、6];6=6,两个6全部出栈,压入12(此时n1=6,因此m=2×6=12),最终栈中只剩一个元素12.
向栈中输入一串数字,请输出应用此规则后栈中最终存留的数字
解答要求
时间限制: C/C++ 1000ms,其他语言: 2000ms
内存限制: C/C++ 256MB,其他语言: 512MB
输入
使用单个空格隔开的正整数的字符串,如"5 6 7 8”,左边数字先入栈。
使用单个空格隔开的正整数的字符串,如"5 6 7 8”,左边的数字先入栈。
正整数大小为[1,2^31-1]。
正整数个数为[1,1000]。
输出