В городе N есть большой склад на котором существует 50000 различных полок. Для удобства работников руководство склада решило заказать для каждой полки табличку с номером от 00001 до 50000 в местной типографии, но когда таблички напечатали, оказалось что печатный станок из-за неисправности не печатал цифру 2, поэтому все таблички, в номерах которых содержалась одна или более двойка (например, 00002 или 20202) — надо перепечатывать. Напишите программу, которая подсчитает сколько всего таких ошибочных табличек оказалось в бракованной партии.
Мой код
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int num = 0, rez = 0, i1 = 0;
for (int i = 1; i < 50000; i++)
{
num = i;
while (num > 0)
{
if (num % 2 == 0)
{
++rez;
break;
}
num /= 10;
}
}
cout << rez << "\n";`
system("pause");
return 0;
}
Я нахожу только четные числа. Подскажите, как определить, есть ли в числе двойка.
Найдем общее количество чисел, которые кончаются на 2. В общем случае это n/10, здесь 5000. Отбросим эти числа, останется 45000, причем у каждых 9 первые 4 цифры одинаковые. Получим рекуррентную формулу f(n)=n/10+9*f(n/10) Причем для однозначных чисел, например 5, f(5)=1 Написать такую программу очень просто, и работает быстро. Ответ должен получится 23756.
int tab(int n)
{
if( n>=2 && n<10) return 1;
return n /10+9*f(n/10);
}
if (num % 2 == 0)
{
++rez;
break;
}
Так как Вы проверяте не является ли цифра цифрой 2, а четное ли само число, Ваш код не работает. Замените на
if (num % 10 == 2)
{
++rez;
break;
}
Такой вариант кода полностью рабочий, но не оптимальный для больших num. Есть более быстрые способы считать кол-во таких чисел, но это совсем другая история.
Решение не верно, то что число делится на 2 не означает, что 2 – его последняя цифра.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
int num = 0, rez = 0, i1 = 0, cipher=0;
for (int i = 1; i < 50000; i++){
num = i;
while (num > 0){
cipher = num % 10; //получаем последнюю цифру числа
if (cipher == 2){
++rez;
break;
}
num /= 10; //отбрасываем последнюю цифру числа
}
}
cout << rez << "\n";
system("pause");
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго времени суток! Решал задачу, условие прилагаетсяПроблема в том, что на одном тесте выдает ошибку времени (ограничение в полсекунды)
Хочу реализовать удаление и появления фотографий с использованием классов
Делаю цикл, обрабатывая json массив, получаю в итоге переменную с кучей option которые нужно вставить в начало select, делаю prepend и он вставляет их перевернутымиПробовал...
есть чекбоксы установленные на фильтр, мне нужна проверка если отмечен хоть один чекбокс , то скрыть определенный блокЯ отмечаю чекбокс,...