解題報告:定義兩種運算符號,一種是》,就是右移,另一種是s,s= (x^2) % (1e9+7);
跟其它表示式求值一樣,用兩個棧,乙個存運算元,另乙個存操作符,有乙個問題就是》這是符號到底是s<>它的一部分還是》它的一部分,因為符號》緊挨右邊一定要有運算元的,而s<>緊挨右邊是一定沒有運算元的,所以只要看是不是兩個連續的》,並且緊挨右邊有沒有運算元,如果都符合的話就是》。然後就是每次計算完s<>這個之後要對符號棧的棧頂進行判斷,如果是》就要繼續計算。
1 #include2 #include3 #include4 #include5 #include6 #include7view codeusing
namespace
std;
8 typedef long
long
int;
9const int mod = 1000000007
; 10
const
int maxn = 2000000+5;11
char
str[maxn],temp[maxn];
12int
get_num(int s,int t)
1320
return
s;21}22
intmain()
2348
if(str[i] == '
>')
4962
else
que1.push_front(tt);63}
64if(str[i] == '^'
)6569if(str[i] >= '
0' && str[i] <= '9'
)7077 i--;
78 ss[ll] =null;
79int tt =atoi(ss);
80if(*que2.begin() == '^'
)8187else
que1.push_front(tt);88}
89}90while(!que2.empty())
91101
/*else if(*que2.begin() == '>')
102*/
111}
112 printf("
%d\n
",*que1.begin());
113que2.clear();
114que1.clear();
115}
116return0;
117 }
中綴表示式轉字尾表示式 求表示式的值
中綴轉字尾需要遵守以下規則 1 運算元 直接輸出 2 直接入棧 3 將 以前的直接輸出,並將 出棧 不輸出 4 運算子 將優先順序不小於該運算子的操作符出棧,最後將該運算子入棧 5 最後將棧中的元素依次彈出 6 優先順序 大於 大於 class intosuf if op i equals if o...
中綴表示式轉字尾表示式 求字尾表示式值
中綴表示式轉字尾表示式 佇列q和棧s q存放字尾表示式結果 s存放操作符 設棧頂元素top 當前讀取元素a 演算法如果s是空棧 a入棧非空棧 a不是操作符,a插入佇列q 如果a為 a入棧 否則,如果a為 把棧內操作符出棧依次插入佇列q,直至遇到得 元素出棧為止 否則,如果a優先順序大於top,a入棧...
C 求表示式值
問題描述 輸入兩個整數a 大於等於1且小於等於9 和n 大於等於1且小於等於80 程式設計求得並輸出下面等式的值 例如 若輸入的a為5,n為6,則要計算下面公式的值 555555 55555 5555 555 55 5。輸入形式 從標準輸入讀入整數a和n,兩者之間以乙個空格分隔。輸出形式 在標準輸出...