題目描述
牛牛考完了四六級,準備分享一下自己的英語學習方法。
牛牛:學習英語最重要的就是背單詞,如果你能把所有的單詞都記住,那麼你的英語就能變成天下第一。
然而牛牛的記憶方法就是把單詞的每個字母轉換成數字,把a看成1,b看成2,c看成3{}a看成1,b看成2,c看成3,依次類推,然後計算出來這個單詞每個字母的和。從此每次想到這個單詞,就要先想到這個單詞的和,然後想辦法湊出這個和。
不久後,牛牛又對自己的記憶方法進行了更新,可以把重複的連續字母進行合併,
比如把abcabc寫成(abc)2,hhhh寫成(h2)2或者h4{}abcabc寫成(abc)2,hhhh寫成(h2)2或者h4,這樣計算和的時候只需要用裡面的和乘個數就可以了,更加方便。(但是有時候牛牛由於老花眼沒有發現幾個相同的連續字母是重複的,所以導致他沒進行合併)
現在到了牛牛考驗你的時間了,牛牛告訴你乙個單詞,這個單詞可能很長甚至你從來沒見過,但牛牛要你按他的方法算出這個單詞的和。
輸入描述:
輸入僅有一行,表示牛牛給你的這個單詞s{}輸入僅有一行,表示牛牛給你的這個單詞s
|s|<=10^5∣s∣<=10
5s中只包含大寫字母,左右括號以及數字,不包含其他字元{}s中只包含大寫字母,左右括號以及數字,不包含其他字元
輸出描述:
輸出一行,表示這個單詞的和{}輸出一行,表示這個單詞的和
保證這個和不大於10^保證這個和不大於10
14示例1
輸入複製
(a2b2)2
輸出複製
12備註:
括號可能會巢狀出現
括號或者字母後面的數字也可能不止一位數,也可能沒有數字,沒有數字就表示為出現1次,但是這個數不可能為0
#include
using
namespace std;
const
int n =
1e5+
100;
#define ll long long
int pos[n]
,st[n]
,top,n;
char ch[n]
;ll solve
(int l,
int r)
else
else tot +
= ch[i]
-'a'+1
,i++;}
}return tot;
}int
main()
} cout <<
solve(1
,n)<< endl;
}
單詞記憶方法
單詞記憶方法 我看到這個問題,第一反應用棧,但是不太熟練,所以寫篇部落格!先來個模擬方法,參考別人的,真不錯!部落格鏈結 include using namespace std typedef long long ll const int mod 1e9 7 intmain else if a i ...
單詞記憶方法 詞根詞綴記憶法
筆記摘自 在北京聽英語講座的感悟 詞根詞綴記憶法,這是最有效率和效果的記憶方法。使用這種方法可以達到舉一反三,四兩撥千金的作用。可以在較短的時間內,記住大量的詞彙。為什麼會這樣呢?這就需要從英語發展的歷史來分析。在追溯英語的歷史發展時,我們通常將它分為三個時期 1 古英語 old english 從...
基礎演算法題 單詞記憶方法(棧)
題目鏈結 對於這些左右括號的問題,很直接能夠想到用棧來解決。解題思路 s i 移動 tp 棧頂指標,準備將新元素壓入棧頂。if s i s i a s i z 壓棧。在字母後面可能跟著數字,所以從 i 1 開始求出其後的數字,最終結果為數字與字元對應的數值相乘。else if s i a s i z...