1 条题解
-
0
自动搬运
来自洛谷,原作者为

刘辰雨
如果你不想称呼我的全名,你可以以我名称的任意非空后缀来称呼我。搬运于
2025-08-24 22:40:17,当前版本为作者最后更新于2022-10-08 13:43:43,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
The Solution of P8573
题意:
给出 个字符串,包含一定的 "CapsLock" 来决定直到下一个 "CapsLock" 的字符串的大小写。
假定输入不断循环,询问 次不同次输入的字符串。
关键:
仔细阅读样例,不难发现,当 "CapsLock" 为奇数个时,不同的“回合”里,字符串大小写变化不一。针对此问题,可以将输入读入两边,这样保证 "CapsLock" 的数量为偶数个,从而达到创造规律的效果。
Code:
详见代码。
#include <iostream> #include <cstdio> #include <cstring> #include <vector> using namespace std; int n,q; bool flag = false; long long x; string s_now,s_all; vector<string> a; string change_back(string s,bool flag) { if(flag == false) return s; else { for(int i = 0 ; i< s.length() ; i++) { if('a'<= s[i] && s[i] <= 'z') s[i] = s[i]-'a'+'A'; else s[i] = s[i]-'A'+'a'; } return s; } } int main() { scanf("%d",&n); for(int i = 1 ; i<= n ; i++) { cin>>s_now; if(s_now == "CapsLock") flag = !flag; else { a.push_back(change_back(s_now,flag)); } } long long u = a.size(); if(flag == true) { for(long long i = 0 ; i< u ; i++) { a.push_back(change_back(a[i],true)); } } long long tot = a.size(); scanf("%d",&q); while(q--) { scanf("%lld",&x); if(x <= tot) cout<<a[x-1]<<'\n'; else { x %= tot; if(x == 0) x = tot; cout<<a[x-1]<<'\n'; } } return 0; }修改日志:
2022年10月10日
第一次审核未通过。修改:删除末尾无意义内容,增加变量字母Latex 并提交第二次。
- 1
信息
- ID
- 8042
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者