Другие языки программирования и технологии

Создайте программу вычисления суммы трехзначных чисел

Программа вычисления суммы трехзначных чисел, в десятичной записи которых нет четных цифр, оформив функцию, определяющую наличие четных цифр в числе. C++
#include "iostream"

bool f(int n) { if (n/100%2==0||

n/10%10%2==0||n%10%2==0) return false; else return true; }

int main() { int k,s=0; for (k=100; k <= 999; k++) if (f(k)) s+=k; std::cout << s << '\n'; return 0; }

Это только для положительных трёхзначных чисел, потому что для всех трёхзначных чисел такая сумма равна нулю. А ответ должен быть 69375.
Владимир Ecogear
Владимир Ecogear
28 648
Лучший ответ
Всего трёхзначных чисел, в которых нет чётных цифр: 5 * 5 * 5 = 125. При этом каждое из 5 значений единиц, десятков и сотен встречается по 25 раз.
Просуммируем отдельно единицы, десятки и сотни, используя школьную формулу суммы арифметической прогрессии. Получаем формулу суммы всех 125 чисел:
25 * (100 + 900) * 5 / 2 + 25 * (10 + 90) * 5 / 2 + 25 * (1 + 9) * 5 / 2 =
= 25 * 100 * (1 + 9) * 5 / 2 + 25 * 10 * (1 + 9) * 5 / 2 + 25 * (1 + 9) * 5 / 2 =
= 111 * 25 * (1 + 9) * 5 / 2 =
= 111 * 25 * 25 =
= ‭69375‬

И никаких бессмысленных проверок на наличие чётных цифр!
Кирилл Попазов
Кирилл Попазов
90 336
Aleksej Naumov Вы вообще читать умеете? Как можно не понять выражение "оформив функцию, определяющую наличие чётных цифр в числе" ? Ясно же сказано !
А трёхзначных чисел, в десятичной записи которых нет чётных цифр, кстати сказать, всего в общей сложности 250 !
#include "iostream"
bool fb(int n){return (n/100)*(n/10)*n%2;}
int main(){int k=1000,s=0; while(k-->100)s+=fb(k)*k; std::cout<<s<<'\n';}
A A
A A
60 501
Aleksej Naumov - Шедевр !..
Aleksej Naumov Вот интересно, мне это мерещится, или один полудурок опять тут за компьютер считает ?

Похожие вопросы