https://www.luogu.com.cn/training/104

目录

P5733 【深基6.例1】自动修正

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string s; cin>>s;
  6. for(int i=0;i<s.size();i++) s[i]=toupper(s[i]);
  7. cout<<s;
  8. return 0;
  9. }

P1914 小书童——凯撒密码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. int n; cin>>n;
  6. string s; cin>>s;
  7. for(int i=0;i<s.size();i++) s[i]='a'+(s[i]-'a'+n)%26;
  8. cout<<s;
  9. return 0;
  10. }

P1125 [NOIP2008 提高组] 笨小猴

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int st[35];
  4. int check(int x)
  5. {
  6. if(x==0) return 0;
  7. if(x==1) return 0;
  8. for(int i=2;i<=x/i;i++)
  9. if(x%i==0) return 0;
  10. return 1;
  11. }
  12. int main(void)
  13. {
  14. string a; cin>>a;
  15. for(int i=0;i<a.size();i++) st[a[i]-'a']++;
  16. int minv=1e9,maxv=-1;
  17. for(int i=0;i<26;i++)
  18. if(st[i]) minv=min(minv,st[i]),maxv=max(maxv,st[i]);
  19. if(check(maxv-minv)) cout<<"Lucky Word"<<'\n'<<maxv-minv;
  20. else cout<<"No Answer"<<'\n'<<0;
  21. return 0;
  22. }

P1957 口算练习题

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+10;
  4. int n;
  5. struct node
  6. {
  7. int a,b;
  8. char op;
  9. }Node[N];
  10. int main(void)
  11. {
  12. cin>>n;
  13. string s,a; getline(cin,s);
  14. for(int i=0;i<n;i++)
  15. {
  16. getline(cin,s);
  17. stringstream l(s);
  18. vector<string>ve;
  19. while(l>>a) ve.push_back(a);
  20. if(ve.size()==2)
  21. {
  22. Node[i].op=Node[i-1].op;
  23. Node[i].a=stoi(ve[0]);
  24. Node[i].b=stoi(ve[1]);
  25. }
  26. else
  27. {
  28. Node[i].op=ve[0][0];
  29. Node[i].a=stoi(ve[1]);
  30. Node[i].b=stoi(ve[2]);
  31. }
  32. }
  33. for(int i=0;i<n;i++)
  34. {
  35. string ans;
  36. if(Node[i].op=='a')
  37. ans=ans+to_string(Node[i].a)+"+"+to_string(Node[i].b)+"="+to_string(Node[i].a+Node[i].b);
  38. if(Node[i].op=='b')
  39. ans=ans+to_string(Node[i].a)+"-"+to_string(Node[i].b)+"="+to_string(Node[i].a-Node[i].b);
  40. if(Node[i].op=='c')
  41. ans=ans+to_string(Node[i].a)+"*"+to_string(Node[i].b)+"="+to_string(Node[i].a*Node[i].b);
  42. cout<<ans<<endl;
  43. cout<<ans.size()<<endl;
  44. }
  45. return 0;
  46. }

P5015 [NOIP2018 普及组] 标题统计

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string s; getline(cin,s);
  6. int flag=0;
  7. for(int i=0;i<s.size();i++)
  8. {
  9. if(s[i]>='a'&&s[i]<='z') flag++;
  10. if(s[i]>='A'&&s[i]<='Z') flag++;
  11. if(s[i]>='0'&&s[i]<='9') flag++;
  12. }
  13. cout<<flag;
  14. return 0;
  15. }

P5734 【深基6.例6】文字处理软件

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. int n; cin>>n;
  6. string s; cin>>s;
  7. while(n--)
  8. {
  9. int op; cin>>op;
  10. if(op==1)
  11. {
  12. string a; cin>>a;
  13. s+=a;
  14. cout<<s<<endl;
  15. }else if(op==2)
  16. {
  17. int l,r; cin>>l>>r;
  18. string temp;
  19. for(int i=l;i<=l+r-1;i++) temp+=s[i];
  20. s=temp;
  21. cout<<s<<endl;
  22. }else if(op==3)
  23. {
  24. int index; cin>>index;
  25. string a,temp; cin>>a;
  26. for(int i=0;i<index;i++) temp+=s[i];
  27. temp+=a;
  28. for(int i=index;i<s.size();i++) temp+=s[i];
  29. s=temp;
  30. cout<<s<<endl;
  31. }else
  32. {
  33. string a; cin>>a;
  34. cout<<(int)s.find(a)<<endl;
  35. }
  36. }
  37. return 0;
  38. }

P1308 [NOIP2011 普及组] 统计单词数

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string a,b,s;
  6. getline(cin,a);
  7. getline(cin,s);
  8. stringstream l(s);
  9. for(int i=0;i<a.size();i++) a[i]=tolower(a[i]);
  10. for(int i=0;i<s.size();i++) s[i]=tolower(s[i]);
  11. int cnt=0,index=0;
  12. for(int i=0;i+a.size()-1<s.size();i++)
  13. {
  14. if((!i||s[i-1]==' ')&&s[i]!=' ')
  15. {
  16. int j=i;
  17. string temp;
  18. temp+=s[j];
  19. while(j+1<s.size()&&s[j+1]!=' ') temp+=s[j+1],j++;
  20. if(temp==a)
  21. {
  22. if(!cnt) index=i;
  23. cnt++;
  24. }
  25. i=j;
  26. }
  27. }
  28. if(cnt) cout<<cnt<<" "<<index<<endl;
  29. else cout<<-1;
  30. }

P1765 手机

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. map<char,int>mp;
  4. int main(void)
  5. {
  6. mp['a']=1,mp['b']=2,mp['c']=3;
  7. mp['d']=1,mp['e']=2,mp['f']=3;
  8. mp['g']=1,mp['h']=2,mp['i']=3;
  9. mp['j']=1,mp['k']=2,mp['l']=3;
  10. mp['m']=1,mp['n']=2,mp['o']=3;
  11. mp['p']=1,mp['q']=2,mp['r']=3,mp['s']=4;
  12. mp['t']=1,mp['u']=2,mp['v']=3;
  13. mp['w']=1,mp['x']=2,mp['y']=3,mp['z']=4;
  14. mp[' ']=1;
  15. string s; getline(cin,s);
  16. int sum=0;
  17. for(int i=0;i<s.size();i++) sum+=mp[s[i]];
  18. cout<<sum;
  19. return 0;
  20. }

P3741 honoka的键盘

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. string s;
  5. int main(void)
  6. {
  7. cin>>n>>s;
  8. int cnt=0;
  9. for(int i=0;i<s.size();i++)
  10. if(i&&s[i]=='K'&&s[i-1]=='V') cnt++;
  11. for(int i=0;i<s.size();i++)
  12. {
  13. string a=s; a[i]='V';
  14. int temp=0;
  15. for(int j=0;j<a.size();j++)
  16. if(j&&a[j]=='K'&&a[j-1]=='V') temp++;
  17. cnt=max(cnt,temp);
  18. }
  19. for(int i=0;i<s.size();i++)
  20. {
  21. string a=s; a[i]='K';
  22. int temp=0;
  23. for(int j=0;j<a.size();j++)
  24. if(j&&a[j]=='K'&&a[j-1]=='V') temp++;
  25. cnt=max(cnt,temp);
  26. }
  27. cout<<cnt;
  28. return 0;
  29. }

P1321 单词覆盖还原

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string s; cin>>s;
  6. int ans1=0,ans2=0;
  7. for(int i=0;i<s.size();i++)
  8. {
  9. if(s[i]=='b') ans1++;
  10. if(s[i]=='o'&&s[i-1]!='b') ans1++;
  11. if(s[i]=='y'&&s[i-1]!='o') ans1++;
  12. if(s[i]=='g') ans2++;
  13. if(s[i]=='i'&&s[i-1]!='g') ans2++;
  14. if(s[i]=='r'&&s[i-1]!='i') ans2++;
  15. if(s[i]=='l'&&s[i-1]!='r') ans2++;
  16. }
  17. cout<<ans1<<'\n'<<ans2;
  18. return 0;
  19. }

P1553 数字反转(升级版)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string s; cin>>s;
  6. if(s.find('.')!=-1)
  7. {
  8. int index=s.find('.');
  9. string a=s.substr(0,index);
  10. string b=s.substr(index+1);
  11. reverse(a.begin(),a.end());
  12. reverse(b.begin(),b.end());
  13. while(a.size()>1&&a[0]=='0') a=a.substr(1);
  14. while(b.size()>1&&b[b.size()-1]=='0') b=b.substr(0,b.size()-1);
  15. cout<<a<<"."<<b;
  16. }else if(s.find('/')!=-1)
  17. {
  18. int index=s.find('/');
  19. string a=s.substr(0,index);
  20. string b=s.substr(index+1);
  21. reverse(a.begin(),a.end());
  22. reverse(b.begin(),b.end());
  23. while(a.size()>1&&a[0]=='0') a=a.substr(1);
  24. while(b.size()>1&&b[0]=='0') b=b.substr(1);
  25. cout<<a<<"/"<<b;
  26. }
  27. else if(s.find('%')!=-1)
  28. {
  29. s=s.substr(0,s.size()-1);
  30. reverse(s.begin(),s.end());
  31. while(s.size()>1&&s[0]=='0') s=s.substr(1);
  32. cout<<s<<'%';
  33. }else
  34. {
  35. reverse(s.begin(),s.end());
  36. while(s.size()>1&&s[0]=='0') s=s.substr(1);
  37. cout<<s;
  38. }
  39. return 0;
  40. }

P1603 斯诺登的密码

  1. //错误代码
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. map<string,int>q;
  5. int main(void)
  6. {
  7. q["one"]=1;q["two"]=2;q["three"]=3;q["four"]=4;q["five"]=5;q["six"]=6;q["seven"]=7;q["eight"]=8;q["nine"]=9;q["ten"]=10;
  8. q["eleven"]=11;q["twelve"]=12;q["thirteen"]=13;q["fourteen"]=14;q["fifteen"]=15;q["sixteen"]=16;q["seventeen"]=17;q["eighteen"]=18;q["nineteen"]=19;q["twenty"]=20;
  9. q["a"]=1;q["both"]=2;q["another"]=1;q["first"]=1;q["second"]=2;q["third"]=3;
  10. string a;
  11. vector<int>ve;
  12. while(cin>>a,a!=".")
  13. {
  14. if(q[a])
  15. {
  16. ve.push_back(q[a]*q[a]%100);
  17. }
  18. }
  19. sort(ve.begin(),ve.end());
  20. if(ve.size())
  21. {
  22. for(int i=0;i<ve.size();i++)
  23. {
  24. if(i==0) cout<<ve[i];
  25. else printf("%02d",ve[i]);
  26. }
  27. }
  28. if(!ve.size()) cout<<0;
  29. return 0;
  30. }
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. map<string,int>q;
  4. int main(void)
  5. {
  6. q["one"]=1;q["two"]=2;q["three"]=3;q["four"]=4;q["five"]=5;q["six"]=6;q["seven"]=7;q["eight"]=8;q["nine"]=9;q["ten"]=10;
  7. q["eleven"]=11;q["twelve"]=12;q["thirteen"]=13;q["fourteen"]=14;q["fifteen"]=15;q["sixteen"]=16;q["seventeen"]=17;q["eighteen"]=18;q["nineteen"]=19;q["twenty"]=20;
  8. q["a"]=1;q["both"]=2;q["another"]=1;q["first"]=1;q["second"]=2;q["third"]=3;
  9. string a;
  10. vector<int>ve;
  11. while(cin>>a,a!=".")
  12. {
  13. if(q[a])
  14. {
  15. ve.push_back(q[a]*q[a]%100);
  16. }
  17. }
  18. sort(ve.begin(),ve.end());
  19. if(ve.size())
  20. {
  21. string ans;
  22. for(int i=0;i<ve.size();i++)
  23. {
  24. string temp=to_string(ve[i]);
  25. if(temp.size()<2) temp="0"+temp;
  26. ans+=temp;
  27. }
  28. while(ans.size()>1&&ans[0]=='0') ans=ans.substr(1);
  29. cout<<ans;
  30. }
  31. if(!ve.size()) cout<<0;
  32. return 0;
  33. }

P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(void)
  4. {
  5. string a,b; cin>>a>>b;
  6. int sum1=1,sum2=1;
  7. for(int i=0;i<a.size();i++) sum1*=a[i]-'A'+1;
  8. for(int i=0;i<b.size();i++) sum2*=b[i]-'A'+1;
  9. sum1%=47,sum2%=47;
  10. if(sum1==sum2) cout<<"GO";
  11. else cout<<"STAY";
  12. return 0;
  13. }

P1597 语句解析

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int ans[3]={0};
  4. int main(void)
  5. {
  6. char a1,a2;
  7. while(scanf("%c:=%c;",&a1,&a2)==2)
  8. {
  9. if(a2>='0'&&a2<='9') ans[a1-'a']=a2-'0';
  10. else ans[a1-'a']=ans[a2-'a'];
  11. }
  12. for(int i=0;i<3;i++) cout<<ans[i]<<" ";
  13. return 0;
  14. }

P1598 垂直柱状图

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int st[35],temp;
  4. string s[4];
  5. int main(void)
  6. {
  7. for(int i=0;i<4;i++) getline(cin,s[i]);
  8. for(int i=0;i<4;i++)
  9. for(int j=0;j<s[i].size();j++)
  10. if(s[i][j]>='A'&&s[i][j]<='z') st[s[i][j]-'A']++;
  11. for(int i=0;i<26;i++) temp=max(temp,st[i]);
  12. for(int i=1;i<=temp;i++)
  13. {
  14. for(int j=0;j<26;j++)
  15. {
  16. if((temp-st[j])>=i) cout<<" ";
  17. else cout<<"* ";
  18. }
  19. puts("");
  20. }
  21. for(int i=0;i<26;i++) cout<<char('A'+i)<<" ";
  22. return 0;
  23. }