【題解】洛谷各種字串問題合集(持續更新中)
阿新 • • 發佈:2019-02-09
洛谷 P1449 字尾表示式
這道題需要手動模擬棧的操作。讀入字元,當字元不為終止字元@時,如果讀入的是數字就用now記錄下它的值,如果讀入的是 . 就將得到的數字值放到棧頂,並清空now。當讀到運算子時,就拿棧頂元素下面的第一個元素和棧頂元素進行加減乘除的操作,並將棧頂清空,元素退棧,最後輸出棧內剩下的唯一元素即可。要用long long
#include<iostream> #include<cstdio> #include<cstring> using namespace std; long long ans[1010]; int main() { long long len=0,now=0; char ch; while((ch=getchar())!='@') { if(ch>='0'&&ch<='9') { now*=10; now+=ch-'0'; } else if(ch=='.') { ans[++len]=now; now=0; } else if(ch=='+') { ans[len-1]+=ans[len]; ans[len]=0; len--; } else if(ch=='-') { ans[len-1]-=ans[len]; ans[len]=0; len--; } else if(ch=='*') { ans[len-1]*=ans[len]; ans[len]=0; len--; } else if(ch=='/') { ans[len-1]/=ans[len]; ans[len]=0; len--; } } cout<<ans[1]<<endl; return 0; }
洛谷P1914 小書童——密碼
水題 然而放上來的原因是因為第一次我忘了取mod。。。記得讀入字元後將其變為數字加上n後取mod
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int main() { int n; cin>>n; char ch; while(cin>>ch) { int ans=ch-'a'+n; ans%=26; printf("%c",ans+'a'); } return 0; }
洛谷 P2614 計算器彈琴
題目比較繁瑣,然而仔細想想還是能模擬出來的。我這道題是讀入字元來解決的,以空格為界限(讀入字串也可以,不過如果懶得轉換的話這道題給的n是沒有用的)。記錄下沒讀到空格時字元的長度,並初始化w=0.對每個字元進行處理,如果讀到空格或換行就無視,如果讀到“(”就代表音符拍子要變為原來的二分之一,也就是給w++。對於“)”同理w--。如果讀到的是延長字元“.”,就把記錄節拍答案的變數加上自身的二分之一,如果是其他的情況就加上二分之一的w次方。最後輸出整型,算得一共要多少秒演奏完曲子。
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; char a[110]; double time=0; int main() { int n,t,len,w=0; cin>>n>>t; for(;scanf("%s",&a)==1;) { len=strlen(a); w=0; for(int j=0;j<len;j++) { switch(a[j]) { case ' ': case '\n': case '\r': case '(':w++;break; case ')':w--;break; case '.':time+=pow(0.5,w+1);break; default:time+=pow(0.5,w); } } } int ans=60*time/t; cout<<ans<<endl; return 0; }
洛谷P1538 迎春舞會之數字舞蹈
將數字的七個組成部分記錄並列印,注意k的大小。
(To be continued...)