Районная олимпиада 2019-2020 информатика


Задача B. Четные цифры

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

Дается два целых натуральных числа $L$ и $R$. Нужно посчитать сколько существует чисел от $L$ до $R$, включительно, у которых все цифры в десятичной записи четные. Найдите ответ.
Формат входного файла
В первой строке входных данных дано два натуральных числа $L$ и $R$ $(1 <= L <= R <= 10^{10})$.
Формат выходного файла
Выведите одно целое число — ответ на задачу.
Система оценки
Данная задача содержит $10$ тестов. Каждый тест оценивается в $10$ баллов:
  1. $1 <= L <= R <= 10^2$. Тесты с номерами 1-2.
  2. $1 <= L <= R <= 10^6$. Тесты с номерами 3-4.
  3. $1 <= L <= R <= 10^{10}$. Тесты с номерами 5-10.
Пример:
Вход
3 10
Ответ
3
( Aibar Kuanyshbay )
посмотреть в олимпиаде

Комментарий/решение:

  1
2020-05-22 20:08:40.0 #

Поздно конечно, но надеюсь поможет

показать/скрыть код

  0
2020-11-09 01:18:01.0 #

показать/скрыть код

  0
2020-11-20 01:25:46.0 #

#include <bits/stdc++.h>

using namespace std;

#define ll long long

#define pb push_back

#define mp make_pair

#define fr first

#define sc second

#define all(x) x.begin(), x.end()

#define rall(x) x.rbegin(), x.rend()

#define w(x) cout<<(#x)<<" = "<<x<<endl;

const int N = 2e5 + 7;

const int M = 2e6 + 7;

const int MOD = 1e9 + 7;

const int INF = 0x3f3f3f3f;

int pos(ll x) {

int op = 1;;

while (x) {

if((x % 10) % 2) return op;

x = x / 10;

op = op * 10;

}

return -1;

}

int main() {

ll l, r, ans = 0;

cin >> l >> r;

for (l; l <= r; ++l) {

if(l % 2) continue;

ll temp = pos(l);

if(temp == -1) ++ans;

else l = l + temp - l % temp - 1;

}

cout << ans;

return 0;

}

  0
2020-11-28 10:27:13.0 #

показать/скрыть код