Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.02.2019
Сообщений: 29

Найти количество чисел на отрезке от A до B, сумма цифр которых четна

27.02.2019, 15:47. Показов 3295. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сумма цифр
Ввод: стандартное устройство ввода
Вывод: стандартное устройство вывода
Ограничение по времени: 1 секунда
Ограничение по памяти: 64 мегабайта
Даны два числа A и B. Посчитайте, сколько на отрезке от A до B включительно чисел, сумма
цифр которых четна.
Формат входных данных
Вводятся два числа A и B (0 ≤ A, B ≤ 10^9)
Формат выходных данных
Выведите одно число – количество чисел на отрезке от A до B, сумма цифр которых четна.
Пример ввода
1)10 20
2)10 10
Пример вывода
1)6
2)0

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>
using namespace std;
 
 
int main(int argc, char** argv) {
    int a,b;
    int i=0,sum=0;
    cin >> a >> b;
    if (a/2==0)
    {
        for (i=a;i<=b;i=i+2)
        {
            sum=sum+1;  
        }
    }
    else
    {
        for (i=a+1;i<=b;i=i+2)
        {
            sum=sum+1;
        }
    }
    cout << sum;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2019, 15:47
Ответы с готовыми решениями:

Посчитайте, сколько на отрезке от A до B включительно чисел, сумма цифр которых четна
Как исправить код, выдаёт правильный ответ не во всех тестах Одинаковые буквы В слове имеются только 2 одинаковые буквы. Найдите...

Количество натуральных чисел на отрезке от А до В, сумма цифр которых четна
Даны два числа А и В. Подсчитайте кол-во натуральных чисел на отрезке от А до В, сумма цифр которых четна. Если можно, то код +...

Подсчитайте количество натуральных чисел на отрезке от А до В, сумма цифр которых четна
Тут ошибка какая-то, помогите найти var a,b,i,s,j:integer; begin readln(a); readln(b); for i:=a to b do begin s:=0; while...

3
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
27.02.2019, 16:22
Вот можно решить так (ввод/вывод сделаете сами, лень возиться):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int length(int64_t n) {
    n = n < 0 ? -n : n;
    int len = 0;
    do { ++len; } while ((n /= 10) != 0);
    return len;
}
 
inline int extract_digit(int64_t n, int len, int pos) {
    static uint64_t dec_mask[]{
        10000000000000000000, 1000000000000000000, 100000000000000000, 10000000000000000, 1000000000000000, 100000000000000,
        10000000000000, 1000000000000, 100000000000, 10000000000, 1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1
    };
    return ((n < 0 ? -n : n) / dec_mask[19 - len + pos + 1]) % 10;
}
 
int sum_digits(int64_t n) {
    int sum = 0, len = length(n);
    for (int p = 0; p < len; ++p)
        sum += extract_digit(n, len, p);
    return sum;
}
 
int64_t count_even_sum_digits(int64_t a, int64_t b) {
    int64_t count = 0;
    while (a <= b) 
        count += sum_digits(a++) % 2 ? 0 : 1;
    return count;
}
 
int main()
{
    auto count = count_even_sum_digits(10, 10);
    count = count_even_sum_digits(10, 20);
    count = count_even_sum_digits(1000, 1500);
    count = count_even_sum_digits(10000, 100000);
    count = count_even_sum_digits(100, 10);
    return 0;
}
Добавлено через 1 минуту
PS: В принципе, можно еще оптимизировать вычисление длины числа (не каждый раз вычислять заново), но и так довольно быстро работает.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.02.2019, 16:53
Цитата Сообщение от jugu Посмотреть сообщение
довольно быстро работает.
А вот можно и еще быстрее. Достаточно заметить, что в каждом полном десятки от 10k до 10k+9 (включительно) ровно 5 чисел с четной суммой цифр. Так что их количество между круглыми числами находится в одно действие.
Остается посчитать, сколько таких чисел от A до ближайшего круглого и от последнего круглого до B
Код очевиден.
Цитата Сообщение от derhg3229 Посмотреть сообщение
Ограничение по времени: 1 секунда
Жуть!!! И кто только такие ограничения придумывает?
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
27.02.2019, 16:59
Цитата Сообщение от Байт Посмотреть сообщение
А вот можно и еще быстрее.
Ну я так и написал, что можно не вычислять длину каждого числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2019, 16:59
Помогаю со студенческими работами здесь

Подсчитайте количество натуральных чисел на отрезке от A до B, сумма цифр которых четна
Даны два числа A и B. Подсчитайте количество натуральных чисел на отрезке от A до B, сумма цифр которых четна. Программа получает на...

Из первых n натуральных чисел вывести на экран те, сумма цифр которых четна
из первых n натуральных чисел вывести на экран те, сумма цифр которых четна Добавлено через 1 час 2 минуты можно решить с помощью...

Из первых n натуральных чисел вывести на экран те, сумма цифр которых четна
Из первых n натуральных чисел вывести на экран те, сумма цифр которых четна (n вводятся с клавиатуры). В функции должен быть оформлен...

Из первых n натуральных чисел вывести на экран те, сумма цифр которых четна
Из первых n натуральных чисел вывести на экран те, сумма цифр которых четна (n вводится с клавиатуры). В функцию должен быть оформлен...

Найти количество четырехзначных чисел, у которых сумма крайних цифр в 2 раза больше суммы средних цифр
Найти количество четырехзначных чисел, у которых сумма крайних цифр в 2 раза больше суммы средних цифр, а сами числа кратны 3. Напишите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru