Форум программистов, компьютерный форум CyberForum.ru

Задача "Пятерки" - C++

Восстановить пароль Регистрация
 
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
19.12.2011, 23:08     Задача "Пятерки" #1
Вот
условие
Пятерки
(Время: 1 сек. Память: 16 Мб)

Задано натуральное N. Требуется написать программу, которая определит количество цифр 5 в записи всех натуральных чисел от 1 до N включительно.
Входные данные

Во входном файле INPUT.TXT в единственной строке задается число N <= 10^18.
Выходные данные

В выходной файл OUTPUT.TXT записывается найденное число – количество пятерок.
Примеры № INPUT.TXT OUTPUT.TXT
1 27 3
2 120 22
задачи
Тут оригинальное условие.

Как ее решать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 23:08     Задача "Пятерки"
Посмотрите здесь:

C++ "cin","cout" на "printf","scanf"
Создайте вектор, хранящий десять строковых значений "zero", "one", ..., "nine" C++
Что означают команды "fun", "my_max", "my_min" в C++? C++
C++ Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На
C++ Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
19.12.2011, 23:19     Задача "Пятерки" #2
я пришел к тому, что d[i] = 18 * d[i - 1] + 1, где i + 1 - разрядность числа, d[i] - кол - во 5.
d[0] = 1
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
19.12.2011, 23:20  [ТС]     Задача "Пятерки" #3
огромное спасибо, но как Вы к этому пришли (хотя бы намек)?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
19.12.2011, 23:27     Задача "Пятерки" #4
пока пытался объяснить, нашел ошибку, прошу прощения)
Dani
19.12.2011, 23:29  [ТС]
  #5

Не по теме:

Цитата Сообщение от neske Посмотреть сообщение
пока пытался объяснить, нашел ошибку, прошу прощения)
с кем не бывает

valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.12.2011, 02:06     Задача "Пятерки" #6
Алгоритм решения:
1. Считываем значение N
2. Объявляем переменные:
__int64 tmp, res=0, tmp_10=1;
3. Запускаем цикл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(true)
{
     tmp=N;
     tmp/=temp_10;
     res+=(tmp/10)*temp_10;
     if(tmp%10>5)
         res+=temp_10;
     if(tmp%10==5)
         res+=N%temp_10+1;
     if(N/temp_10<10)
         break;
     else
         temp_10*=10;
}
4. Выводим значение res.
Yandex
Объявления
20.12.2011, 02:06     Задача "Пятерки"
Ответ Создать тему
Опции темы

Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru