HNU 12817 Shipura(表示式求值)

2022-05-18 12:00:38 字數 1287 閱讀 6604

解題報告:定義兩種運算符號,一種是》,就是右移,另一種是s,s= (x^2) % (1e9+7);

跟其它表示式求值一樣,用兩個棧,乙個存運算元,另乙個存操作符,有乙個問題就是》這是符號到底是s<>它的一部分還是》它的一部分,因為符號》緊挨右邊一定要有運算元的,而s<>緊挨右邊是一定沒有運算元的,所以只要看是不是兩個連續的》,並且緊挨右邊有沒有運算元,如果都符合的話就是》。然後就是每次計算完s<>這個之後要對符號棧的棧頂進行判斷,如果是》就要繼續計算。

1 #include2 #include3 #include4 #include5 #include6 #include7

using

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 }

view code

中綴表示式轉字尾表示式 求表示式的值

中綴轉字尾需要遵守以下規則 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,兩者之間以乙個空格分隔。輸出形式 在標準輸出...