Hướng giải của Số một số
Hướng dẫn giải
Read the intended approach and key ideas behind this problem.
Hãy nhớ chỉ sử dụng editorial này khi thật sự bị bí, và tuyệt đối không sao chép–dán code từ đó. Hãy tôn trọng tác giả bài toán và người viết lời giải.
Nộp lời giải chính thức trước khi tự mình giải được bài là hành vi có thể bị cấm (ban).
Nộp lời giải chính thức trước khi tự mình giải được bài là hành vi có thể bị cấm (ban).
Tác giả:
Nhận xét:
Từ 1 đến 10 có 9 số thỏa mãn là 1, 2, 3, …, 9;
Từ 11 đến 100 có 9 số thỏa mãn là 11, 22, 33, …, 99
Từ 101 đến 1000 có 9 số thỏa mãn là 111, 222, 333, …, 999;
…
Vì vậy kết quả gồm 2 phân:
. Số lượng số thỏa mãn có số chữ số nhỏ hơn N;(là bội của 9)
. Các số thỏa mãn có số chữ số bằng N;
include <bits/stdc++.h>
using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string s; if (!(cin >> s)) return 0; long long N = stoll(s); int L = s.size(); if (N < 10) { cout << N << "\n"; return 0; } int ans = 9 * (L - 1); for (char d = '1'; d <= '9'; ++d) { string t(L, d); if (t.size() < s.size() || (t.size() == s.size() && t <= s)) ans++; } cout << ans << "\n"; return 0; } code
Đang trả lời bình luận