1 条题解
-
0
思路: 有题可知这些话是一直重复的,而字符串最多重复两次即可形成一个循环,然后就可以默认进行打表模拟即可。
AC代码:
#include <bits/stdc++.h> using namespace std; //#define int long long string str[int(2e5)+100]; signed main() { int n,num=0; cin>>n; int in=n; bool cap=0; for (int i = 0; i < n; ++i) { string x; cin>>x; if(x=="CapsLock"){ num++; cap=!cap; in--; continue; } if (cap){ for (int i=0;i<x.size();i++) { if(islower(x[i])){ x[i]=toupper(x[i]); }else{ x[i]=tolower(x[i]); } } } str[i-(n-in)]=x; } if(num%2){ for (int i = 0; i < in; ++i) { string x=str[i]; for (int j=0; j < x.size(); j++) { if(islower(x[j])){ x[j]=toupper(x[j]); }else{ x[j]=tolower(x[j]); } } str[i+in]=x; } }else{ for(int i=0;i<in;++i){ str[i+in]=str[i]; } } int q; cin>>q; for (int i = 0; i < q; ++i) { long long x; cin>>x; cout<<str[(x-1)%(2*in)]<<endl; } return 0; }
- 1
信息
- ID
- 7771
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者