PTA | 程式設計類實驗輔助教學平臺 (pintia.cn)
1 簽到
#include <bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } int main() { // freopen("1.in","r",stdin); // freopen("3.out","w",stdout); cout<<"Problem? The Solution: Programming."; }
2 沒看懂題,但是猜題意,輸出b-a
#include <bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } int main() { // freopen("1.in","r",stdin); // freopen("3.out","w",stdout); int a=read(),b=read(); cout<<b-a; }
3 模擬
第一行:如果a=2或者b=1,輸出-,否則如果a=0,輸出biii,否則輸出dudu
第二行:如果是綠燈,輸出move,否則輸出stop
#include <bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } int main() { // freopen("1.in","r",stdin); // freopen("3.out","w",stdout); int a=read(),b=read(); if(a==2||b==1) printf("-"); else if(a==0) printf("biii"); else printf("dudu"); puts(""); if(a==1) printf("move"); else printf("stop"); }
4 用now表示當前,前i項全能的最少人數,則剛開始now=n,每次迴圈,拿著a[i]來更新now,公式是now=max(0,now+a-n)
#include <bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } int n,m,now; int main() { // freopen("1.in","r",stdin); // freopen("3.out","w",stdout); now=n=read(); m=read(); for(int i=1;i<=m;i++) { int a=read(); now=max(0,now+a-n); } cout<<now; }
5 模擬
根據樣例5,需要先列舉n個違禁詞,再列舉每個位置,進行替換。
判斷可以迴圈或者用substr。替換可以用replace函式。
為了避免"<censored>"的字串是某個違禁詞,比如有個違禁詞叫cen。可以每次替換後寫一個i=i+10;並且替換時使用"\1\1\1\1\1\1\1\1\1\1"這個串而非"<censored>",避免違禁詞再次被替換。
#include <bits/stdc++.h> using namespace std; typedef long long ll; int read() { int x;scanf("%d",&x);return x; } string cen="<censored>",s[110],t,tt="\1\1\1\1\1\1\1\1\1\1"; int n,ans; void work(int &i,int j) { if(i+s[j].size()>t.size()){ i++; return ; } for(int k=0;k<s[j].size();k++) { if(t[i+k]!=s[j][k]){ i++; return ; } } ans++; t.replace(i,s[j].size(),tt); i=i+10; } int main() { // freopen("1.in","r",stdin); // freopen("3.out","w",stdout); cin>>n; for(int i=1;i<=n;i++) cin>>s[i]; int k; cin>>k; getline(cin,t); getline(cin,t); for(int j=1;j<=n;j++) for(int i=0;i<t.size();) work(i,j); if(ans<k) { for(int i=0;i<t.size();i++) if(t[i]=='\1') t.replace(i,cen.size(),cen); cout<<t; } else cout<<ans<<"\nHe Xie Ni Quan Jia!"; }