1. 程式人生 > >2018 ACM-ICPC 亞洲區域賽北京現場賽 I題

2018 ACM-ICPC 亞洲區域賽北京現場賽 I題

做法:打表找規律

大數是過不了這個題的(但可以用來打表)

先找k的字首,字首對應邊緣數字是哪個 如果第0位是2-9 對應奇數長度的1-8 第0位為1時,第1位為0時對應奇數長度的9,為1-9時對應偶數長度的1-9,剩下的根據奇偶判斷先從頭到尾再從尾到頭跑一編即可

如100會得到909

100234會得到902343209

110會得到1001

11234會得到12344321

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int t;
    cin 
>> t; while (t--) { string k; cin >> k; if (k.size() == 1 || k == "10") { if(k.size() == 1) cout << (char)(k[0] - 1) << endl; else { cout << "9" << endl; }
continue; } bool flag = 1; if (k[0] == '1' && k[1] > '0') { flag = 0; } if (!flag) { cout << k[1]; for(int i = 2; i < k.size(); i++) { cout << k[i]; }
for (int i = k.size() - 1; i > 1; i--) { cout << k[i]; } cout << k[1] << endl; } else { int x = 2; if (k[0] == '1') cout << "9"; else { cout << k[0] - 1 << endl; x = 1; } for (int i = 2; i < k.size(); i++) { cout << k[i]; } for (int i = k.size() - 2; i >= x; i--) { cout << k[i]; } if (k[0] == '1')
cout
<< "9" << endl; else { cout << k[0] - 1 << endl; } } } return 0; }

 

順便寫下北京站的心得吧

三題拿銅滾粗,給學校丟人了

本身很菜,可能是最後一次區域賽了

北大的氛圍好舒服啊,我好想去(逃)