G-Digital Folding_2026牛客寒假算法基础集训营1
1 #include <bits/stdc++.h> 2 using namespace std; 3 inline long long renum(string s,int l) 4 { 5 long long pi = 1,a = 0; 6 for(int i = 0;i < l;i++) 7 { 8 a += pi * int(s[i] - '0'); 9 pi *= 10; 10 } 11 return a; 12 } 13 int main() 14 { 15 int T,ln,rn; 16 string l,r,ans; 17 cin >> T; 18 while(T--) 19 { 20 l.clear(); 21 r.clear(); 22 ans.clear(); 23 cin >> l >> r; 24 ln = l.size(); 25 rn = r.size(); 26 if(l == r) 27 { 28 cout << renum(l,ln) << endl; 29 continue; 30 } 31 if(renum(r,rn) == 1) 32 { 33 for(int i = 1;i <= rn - 1;i++) cout << "9"; 34 cout << endl; 35 continue; 36 } 37 if(ln < rn) 38 { 39 l[0] = '1'; 40 for(int i = 1;i < rn;i++) l[i] = '0'; 41 ln = rn; 42 } 43 bool flag = 0; 44 //对于未分配内存的string 直接修改内容会导致内容存储不稳定 因用push_back 45 for(int i = 0;i < rn;i++) 46 { 47 if(flag == 1) ans.push_back('9'); 48 else if(l[i] == r[i]) ans.push_back(l[i]); 49 else 50 { 51 flag = 1; 52 ans.push_back(char(r[i] - 1)); 53 } 54 } 55 cout << ((renum(ans,rn) > renum(r,rn)) ? renum(ans,rn) : renum(r,rn)) << endl; 56 } 57 }
浙公网安备 33010602011771号