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

Напечатать k-ую цифру последовательности, в которой выписаны подряд все натуральные числа

21.05.2016, 03:51. Показов 11438. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано натуральное число k. Напечатать k-ую цифру последовательности: 12345678910111213141516171819202122..., в которой выписаны подряд все натуральные числа.

Входные данные

Дано натуральное число k.

Выходные данные

Вывести цифру, которая находится на k-ой позиции последовательности.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2016, 03:51
Ответы с готовыми решениями:

Напечатать k-ю цифру последовательности, в которой выписаны подряд все натуральные числа
Дано натуральное k. Напечатать k-ю цифру последовательности 12345678910111213, в которой выписаны подряд все натуральные числа.

Напечатать заданную цифру последовательности, в которой выписаны подряд все числа Фибоначчи
Дано натуральное k. Напечатать k-ую ЦИФРУ последовательности 11235813..., в которой выписаны подряд все числа Фибоначчи. Добавлено...

Определить k-ю цифру в последовательности, в которой выписаны подряд все двузначные числа
Даны целое число k, 1<k<180 и последовательность цифр 10111213...9899, в которой выписаны подряд все двузначные числа. Определить k-ю...

13
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 153
21.05.2016, 05:46
C++
1
2
3
4
int k;
cin >> k;
for (int i = 1; i < k; i++)
    cout << i;
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
21.05.2016, 06:14
Сильный кот Добавлю ленивого до кучи
Haskell
1
f = (!!) $ [0..] >>= show
1
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 153
21.05.2016, 06:23
Цитата Сообщение от _Ivana Посмотреть сообщение
Сильный кот
Это лев, а не кот!!!
0
 Аватар для Alamant
13 / 13 / 9
Регистрация: 16.05.2016
Сообщений: 49
21.05.2016, 09:38
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    int k = 0;
    string nums = "";
 
    cout << "k? ";
    cin >> k;
 
    for (auto i = 1; i <= k; ++i)
        nums.append(to_string(i));
 
    cout << nums.at(k - 1) << endl;
 
    system("pause");
}
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
21.05.2016, 16:57
Мой леф:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef unsigned long long ull;
 
int f(ull k) {
    
    int d = 1; ull p = 1;
    
    while (k > 9*d*p) {k -= 9*d*p; d += 1; p *= 10;}
    
    ull n = p + (k-1)/d; int m = d - (k-1)%d - 1;
    
    while (m--) n /= 10;
    
    return n%10;
}
 
int main() {cout << f(15446744073709551611);}
0
26 / 25 / 14
Регистрация: 12.10.2018
Сообщений: 240
02.12.2018, 11:40
_Ivana, а можете переделать задачку, но без использования функции и typedef?
0
0 / 0 / 0
Регистрация: 03.05.2022
Сообщений: 5
04.05.2022, 11:31
15. Определить k-ю цифру последовательности 123456789101112131415... ,
в которой подряд записаны все натуральные числа. - похожее задание и вот какой алгоритм я придумал.
Принимается Обоснованная критика !

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
39
void task_15();
 
int main()
{
    setlocale(LC_ALL, ".UTF8");
    task_15();
    return 0;
}
 
void task_15()
{
    long long int val = 1234567891011121314,resault = 1, point, counter = 1;   
    do
    {
        cout << "print point:\t";
        cin >> point;
    } while (point <= 0);
 
    if(point >= 0 && point <= 9)
        cout << point << endl;
    else
    {   
        for(int i = point, null = i; i > 0; i-=counter)
        {   
            counter = 1;
            null = i;
            cout << null << endl;
            while(null > 9)
            {
                null /= 10;
                counter++;
            }
            resault++;
        }
        if(point > 9 && point % 2 != 0)  // для того что бы он не перепрыгивал на следующее число при нечетном point
            resault--;
        cout << resault << endl;
    }
}
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
04.05.2022, 11:40
And2ey12,
В этом случае не нужен алгоритм. Т. к 5- ое число это 5 10-ечисло это 10 а 101 число это 101 и т.д
1
0 / 0 / 0
Регистрация: 03.05.2022
Сообщений: 5
06.05.2022, 17:21
не совсем понял ваше обьяснение.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,217
06.05.2022, 18:15
Цитата Сообщение от YUEN HOIFEF Посмотреть сообщение
В этом случае не нужен алгоритм. Т. к 5- ое число это 5 10-ечисло это 10 а 101 число это 101 и т.д
Это откуда взялось такое предположение? Задача поставлена ясно: напечатать цифру, а не число.

Цитата Сообщение от And2ey12 Посмотреть сообщение
long long int val = 1234567891011121314
Что это и к чему это?

Цитата Сообщение от And2ey12 Посмотреть сообщение
C++
1
2
     if(point >= 0 && point <= 9)
        cout << point << endl;
Зачем было выносить это в отдельную ветку? Учитывая, как выполнена остальная часть решения, никакого смысла в такой оптимизации нет.

Цитата Сообщение от And2ey12 Посмотреть сообщение
if(point >= 0
В чем смысл этой проверки, если проверка ввода не допускает отрицательные значения point?

Цитата Сообщение от And2ey12 Посмотреть сообщение
if(point > 9
В чем смысл этой проверки, если в этой ветке гарантированно point > 9?

Цитата Сообщение от And2ey12 Посмотреть сообщение
Принимается Обоснованная критика !
Ввел значение 20. В ответ получил 15. Что это? Что такое 15?

P.S. Задача уже много раз решалась, в т.ч. Определить k-ю цифру последовательности, в которой выписаны подряд все натуральные числа от 50 до 250
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
06.05.2022, 18:30
Хорошо бы такое решить без цикла за O(1)
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,217
06.05.2022, 18:57
Цитата Сообщение от QueryMonkey Посмотреть сообщение
Хорошо бы такое решить без цикла за O(1)
Циклы - это в первую очередь скрытое или не очень возведение в степень или вычисление логарифма. Такие операции сами по себе уже не являются O(1) операциями, даже если программа их использующая не содержит циклов.

А решений без таких операций пока не встречалось...
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
06.05.2022, 19:04
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Циклы - это в первую очередь скрытое или не очень возведение в степень или вычисление логарифма. Такие операции сами по себе уже не являются O(1) операциями, даже если программа их использующая не содержит циклов.
А решений без таких операций пока не встречалось...
Я считаю что аппаратное взятие логарифма от встроенного типа приравнивается к О(1).
Если очень хочется, можно назвать О(2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.05.2022, 19:04
Помогаю со студенческими работами здесь

Напечатать k-ю цифру последовательности 149162536, в которой выписаны подряд квадраты всех натуральных чисел
Напечатать k-ю цифру последовательности 149162536, в которой выписаны подряд квадраты всех натуральных чисел C++

Определить k-ю цифру последовательности в которой выписаны подряд числа Фибоначчи
Условие: Задано натуральное число k. Определить k-ю цифру последовательности: 1123581321... в которой выписаны подряд ...

Определить К-ю цифру в заданной двоичной последовательности, в которой выписаны подряд степени числа 10
Дано целое число К. Определить К-ю цифру в последовательности 11010010001…., в которой выписаны подряд степени числа 10. Дано такое...

Определить k-ю цифру последовательности 10111213...9898 (выписаны подряд все двухзначные числа)
Даны целое число л (1&lt;=k&lt;=180) и последовательность цифр 10111213...9898, в которой вписаны подряд все двухзначные числа. Определить k-ю...

Дано целое число k и последовательность цифр, в которой выписаны подряд все двузначные числа. Определить k-ю цифру
Помогите решить... Дано целое число k (1&lt;=k&lt;=180) и последовательность цифр 10111213...9899, в которой выписаны подряд все двузначные...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru