Как известно, одно из самых весёлых занятий для маленького ребёнка — звонить в случайные квартиры, используя домофон.
Мальчик Вася решил обзвонить квартиры в своём доме. Всего в доме n квартир, которые пронумерованы целыми числами от 1 до n. Мальчик решил звонить только в квартиры со скучными номерами. Номер называется скучным, если и только если он состоит из одинаковых цифр. Например, квартиры с номерами 222, 1 и 999 являются скучными, а квартиры с номерами 42 и 20 — не являются. Для того чтобы Васе было весело, он решил обзванивать квартиры в следующем порядке.
Сначала мальчик обзвонит все квартиры с номерами, состоящими только из единиц, в порядке возрастания номеров квартир. Затем он обзвонит все квартиры с номерами, состоящими только из двоек, в порядке возрастания номеров, и так далее. Таким образом, последовательность номеров квартир, в которые будет звонить мальчик, окажется следующей:
1, 11, 111, … , 2, 22, 222, …, 3, 33, 333, …, 4, 44, 444, …, 5, 55, 555, … , 6, 66, 666, … 7, 77, 777, … , 8, 88, 888, …, 9, 99, 999, …
Шалость Васи могла бы продолжаться долго, но люди, живущие в квартире с номером k, ответили мальчику, из-за чего он испугался и сразу же убежал. Теперь Васе интересно, как много квартир он успел обзвонить. Но он ещё очень маленький, поэтому посчитать количество квартир придётся вам.
Ответ
C++:
#include
using namespace std;
#define ll long long
int main() {
ll n, k; cin >> n >> k;
int cnt = 0;
for (int i = 1; i <= 9; ++i) {
for (int j = i; j <= n; j = j * 10 + i) {
++cnt;
if (j == k) {
cout << cnt << «\n«;
return 0;
}
}
}
}
Python:
n = int(input())
k = int(input())
cnt = 0
for i in range(1, 10):
j = i
while j <= n: cnt += 1 if j == k: print(cnt) exit(0) j = j * 10 + i