改思路了,这题真难写,后半部分看不懂,所以我决定只过它的一二测试点,拿40分
- #include
- using namespace std;
-
- int main() {
- int w, ss;
- cin >> w >> ss;
- string s;
- cin >> s;
- int op = 1;
- vector<int> ans;
- for (int i = 0; i < s.size(); i++) {
- if (isupper(s[i])) {
- if (op == 1) {
- ans.push_back(s[i] - 'A');
- }
- else if (op == 2) {
- op = 1;
- ans.push_back(28);
- ans.push_back(s[i] - 'A');
- }
- else {
- op = 1;
- ans.push_back(28);
- ans.push_back(28);
- ans.push_back(s[i] - 'A');
- }
- }
- else if (islower(s[i])) {
- if (op == 1) {
- op = 3;
- ans.push_back(27);
- ans.push_back(s[i] - 'a');
- }
- else if (op == 2) {
- op = 3;
- ans.push_back(27);
- ans.push_back(s[i] - 'a');
- }
- else {
- ans.push_back(s[i] - 'a');
- }
- }
- else {
- if (op == 1) {
- op = 2;
- ans.push_back(28);
- ans.push_back(s[i]-'0');
- }
- else if (op == 2) {
- ans.push_back(s[i] - '0');
- }
- else {
- op = 2;
- ans.push_back(28);
- ans.push_back(s[i] - '0');
- }
- }
- }
- int n = ans.size();
- if (n % 2 != 0)ans.push_back(29);
- //for (int i = 0; i < ans.size(); i++)cout << ans[i] << endl;
- vector<int> res;
- for (int i = 0; i < ans.size(); i += 2) {
- res.push_back(ans[i] * 30 + ans[i + 1]);
- }
- int m = res.size();
- int nn = m % w;
- nn = m - nn + w;
- cout << nn << endl;
- for (int i = 0; i < nn-1; i++) {
- if (i < res.size())
- cout << res[i] << endl;
- else
- cout << "900" << endl;
- }
- return 0;
- }