Loading [MathJax]/jax/output/SVG/jax.js

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


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

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

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

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

  3
4 года 10 месяца назад #

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

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

C++

  13
4 года 4 месяца назад #

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

C++

  0
4 года 4 месяца назад #

#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
4 года 4 месяца назад #

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

C++

  1
4 года 3 месяца назад #

#include <bits/stdc++.h>

#include <fstream>

using namespace std;

ll l, r;

ll t[12];

int check(ll n) {

int cnt = 0;

while (n) {

if (n % 10 != 8)

break;

else cnt++;

n /= 10;

}

return cnt;

}

ll f(ll n) {

ll i = 2, res = 0, cnt = 0;

while (i <= n) {

res++;

cnt = check(i);

i += t[cnt];

}

return res;

}

void solve() {

cin >> l >> r;

cout << f(r) - f(l-1) << endl;

}

int main() {

ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

cerr << setprecision(10) << fixed;

/*ofstream fout;

ifstream fin;

fin.open("input.txt");

fout.open("output.txt");*/

ll p = 12, cnt = 10;

t[0] = 2;

for (int i = 1; i <= 11; i++) {

t[i] = p;

p = cnt*10 + p;

cnt *= 10;

}

int tt = 1;

//cin >> t;

while (tt--) {

solve();

}

/*fin.close();

fout.close();*/

return 0;

}

пред. Правка 2   0
3 года 11 месяца назад #

пред. Правка 2   0
3 года 2 месяца назад #