classSolution { public: string addStrings(string num1, string num2){ vector<int> A, B; int k = 0; string res = ""; for (int i = num1.size() - 1; i >= 0; i--) { A.push_back(num1[i] - '0'); } for (int i = num2.size() - 1; i >= 0; i--) { B.push_back(num2[i] - '0'); } for (int i = 0; i < A.size() || i < B.size(); i++) { if (i < A.size()) k += A[i]; if (i < B.size()) k += B[i]; res += char(k % 10 + '0'); k /= 10; } if (k) res += char('1'); reverse(res.begin(), res.end()); return res; } };
classSolution { public: intgetCnt(int prefix, int n){ longlong p = 1; auto A = to_string(n), B = to_string(prefix); int dt = A.size() - B.size(); int res = 0; for (int i = 0; i < dt; ++i) { res += p; p *= 10; } A = A.substr(0, B.size()); if (A == B) res += n - prefix * p + 1; elseif (A > B) res += p; return res; }
intfindKthNumber(int n, int k){ int prefix = 1; while (k > 1) { int cnt = getCnt(prefix, n); if (k > cnt) { k -= cnt; prefix++; } else { prefix *= 10; --k; } } return prefix; } };