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

Пятерки - C++

Восстановить пароль Регистрация
 
Farruh Turgunov
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 5
17.03.2013, 08:31     Пятерки #1
Задано натуральное 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
17.03.2013, 08:31     Пятерки
Посмотрите здесь:

C++ Дано натуральное число,заменить в нем все <единицы> на <пятерки>. Вводимые числа в промежутке [10;9999]
Найти количество чисел a1(i=1,2,....,n), являющихся степенями пятерки C++
C++ Определить функцию, позволяющую распознаёт степени пятерки
Массив целых чисел. Рассмотреть отрезки последовательности, состоящие из степеней пятерки C++
C++ Вычислить сумму элементов массива, которые являются степенями пятерки и индексы которых есть нечетные числа.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
17.03.2013, 10:01     Пятерки #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <fstream>
 
using namespace std;
 
int main() {
    long long n;
    fstream f("INPUT.TXT", ios::in);
    (f >> n).close();
    long long result = 0, t, p = 1;
    do {
        p = (p << 1) + (p << 2);
        result += (t = n / p);
    } while (t);
    f.open("OUTPUT.TXT", ios::out);
    (f << result).close();
}
Farruh Turgunov
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 5
17.03.2013, 19:44  [ТС]     Пятерки #3
your solution is wrong

Добавлено через 5 минут
you cant understand this question

you should find digit of 5 in 1 to N

for ex: 120

5 15 25 35 45 => 5
50 51 52 53 54 55 56 57 58 59 => 11
65 75 85 95 105 115 => 6
so answer is 5 + 11 + 6 => 22

Добавлено через 3 часа 12 минут
My code will time limit exceeded

what should i do
this is my code
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main()
{
  int i,n,k,s=0;
  cin >> n;
  for(i=5;i<=n;i++)
  {
  k=i;
  while(k>0){
             if(k%10==5)s++;
             k/=10;
             }
  }
  cout << s << endl; 
system("pause");
return 0;
}
 Комментарий модератора 
Пишите по-русски.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
18.03.2013, 00:19     Пятерки #4
Цитата Сообщение от Farruh Turgunov Посмотреть сообщение
My code will time limit exceeded
ну а что же Вы хотели, запуская цикл:
Цитата Сообщение от Farruh Turgunov Посмотреть сообщение
C++
1
for(i=5;i<=n;i++)
, где n может быть равной 10^18. Кстати это значение в переменную типа int не поместится.
Подумайте лучше над таким способом решения задачи, например для числа 120.
Пятерка на первом месте (на месте единиц) появится 12 раз, или 120/10. Но если бы было 120%10 больше 4, то было бы еще +1.
Пятерка на втором месте (на месте десятков) появится 10 раз, или 120/100*10. Но если бы было (120/10)%10 больше 5, то + 10. И если (120/10)%10==5, то + 120%10+1.
Пятерка на третьем месте появится 0 раз. Но если бы было 120/100 больше 5, то + 100. И если 120/100==5, то 120%100 +1.
Yandex
Объявления
18.03.2013, 00:19     Пятерки
Ответ Создать тему
Опции темы

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