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

Определить какая цифра стоит в k позиции последовательности

28.06.2022, 17:01. Показов 1335. Ответов 12
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Построить числовую последовательность и определить, какая цифра стоит в ее k-й позиции. В последовательность должны быть записаны нечетные натуральные числа (13579111315...)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2022, 17:01
Ответы с готовыми решениями:

Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности
Товарищи, задача такая: Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности 10111213....9899 в...

Определить, какая цифра находится в заданной позиции в последовательности степеней десятки
Ограничение времени: 1.0 секунды Ограничение памяти: 16 МБ Представим себе бесконечную последовательность цифр, составленную из...

Определить, какая цифра стоит на заданном месте в последовательности
всем вечер добрый. интересует алгоритм решения к двум задачам. честно говоря, довольно долго думал, но ничего дельного я не придумал. ...

12
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
28.06.2022, 17:33
Аналитически
5,
2/2*(102-101),
3/2*(103-102),
4/2*(104-103).
...

или программно

n += sprintf(sz, "%d", i );

?
0
0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 6
28.06.2022, 17:42  [ТС]
Программу написать . Я написал, но преподаватель сказал, что плохо, особо и не указав на ошибки. Забыл только программу свою прикрепить , когда тему создавал

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main () {
    int k;
    cout << "Enter the position number of the numeric sequence: ";
    cin >> k;
    int n=-1;
    for (int i=1; i<=k; i++)
    {
        n+=2;
        cout << n;
    }
    cout << " ";
    cout << n;
}
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
28.06.2022, 17:59
Если я не ошибаюсь, ваша программа печатает 2k-1. Это совпадает с верным ответом для первых пяти чисел, потом начинаются двузначные.

1->1
2->3
3->5
4->7
5->9
6->1 // ваша программа дает 11, что не является цифрой
7->1 // у вашей программы 13, что тоже не цифра
8->1 // и т.д.
9->3
1
0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 6
28.06.2022, 18:31  [ТС]
Добавлено через 25 минут
Да, я тоже это заметил и вот сижу, не понимаю, как можно это исправить. Можете помочь?
0
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
28.06.2022, 18:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string.h>
using namespace std;
int main () {
    int k;
    cout << "Enter the position number of the numeric sequence: ";
    cin >> k; cin.get();
    char buf[40]{};
    int n = -1;
    while(k>0)
    {
        n+=2;
        itoa(n,buf,10);
        k -= strlen(buf);
    }
    cout << *(buf - k);
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 6
28.06.2022, 19:00  [ТС]
Спасибо за программу, можете объяснить 13,14 и 16 строчки?
0
 Аватар для programmer_08
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
28.06.2022, 19:07
Лучший ответ Сообщение было отмечено Stylechek как решение

Решение

Stylechek, а она неправильная) вот правильная) тут два варианта с stringom, что проще понять и без него, что сложнее понять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;
int main () {
    int k, K;
    cout << "Enter the position number of the numeric sequence: ";
    cin >> k; cin.get();
    K = k;
    char buf[40]{};
    int n = -1;
    string str = "\n";
    while(k > 0)
    {
        n+=2;
        itoa(n,buf,10);
        k -= strlen(buf);
        str+=buf;
    }
    cout << *(buf +strlen(buf) - 1 + k) << endl << str[K];
    cin.get();
    return 0;
}
itoa преобразует число в строку символов и таким образом мы определяем на на каких по счёту цифрах мы находимся и каждый раз вычитаем из k столько сколько символов в строке, если число больше нуля, то мы не дошли, меньше нуля - перескочили, == 0 это оно и есть.
*(buf +strlen(buf) - 1 + k) таким образом мы компенсируем перескок.
str[K] со стрингом значительно проще) правда память нужна и каждый раз приходится присоединять строку
2
Объявлятель переменных
 Аватар для SpBerkut
1225 / 411 / 321
Регистрация: 24.09.2011
Сообщений: 1,279
28.06.2022, 20:38
Не, ну а вдруг препод очень уж вредным окажется.
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
#include <iostream>
 
unsigned getDigit(int64_t n, unsigned d) {
    while (d--) n/=10;
    return n%10;
}
 
const int64_t FOO[] = {0, 5, 95, 1445, 19445, 244445, 2944445, 34444445, 394444445, 4444444445,
                       49444444445, 544444444445, 5944444444445, 64444444444445, 694444444444445,
                       7444444444444445, 79444444444444445, 844444444444444445, 8944444444444444445};
const int64_t BAR[] = {0, 1, 11, 101, 1001, 10001, 100001, 1000001, 10000001, 100000001, 1000000001,
                       10000000001, 100000000001, 1000000000001, 100000000000001, 1000000000000001,
                       10000000000000001, 100000000000000001, 1000000000000000001};
 
int main()
{
    int64_t k, pos;
    std::cin >> k;
    unsigned order = 0;
    while (FOO[order] < k) order++;
    k -= FOO[order-1];
    pos = k % order;
    k = k / order - (pos?0:1);
    k = k * 2 + BAR[order];
    std::cout << getDigit(k, (order-pos)%order);
}
2
0 / 0 / 0
Регистрация: 30.11.2021
Сообщений: 6
28.06.2022, 20:46  [ТС]
Ну , препод больше в шоке будет от такого решения, ибо с виду сама программа выглядит уж очень сложной. Я лично смотрю и практически ничего не понимаю, к сожалению мои познания в С++ на данный момент крайне скудные. Можете пожалуйста подробно описать программу ?
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
28.06.2022, 21:55
Не пугайте препода, дайте ему что-то покороче:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char* argv[] )
{
  int k = atoi(argv[1]);
  char s[40];
 
  for( int i = 1 ; (k -= sprintf(s+'\b',"%d%n",i,s)) > 0 ; i += 2 ) ;
  putchar(7[*s+s+k]);
  return 0;
}
Добавлено через 50 секунд
SpBerkut,
2
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
28.06.2022, 22:25
У меня так получилось (через функцию):
C++
1
2
3
4
5
6
7
8
9
10
11
unsigned func(unsigned long long k)
{
  unsigned long long number = 1, i = 1;
  while (i < k)
  {
    number += 2;
    i += (int)log10(number) + 1;
  }
  // возвращаем k-ую цифру
  return (number / (int)pow(10, i - k)) % 10;
}
Первые 1000 цифр:
1357911131517192123252729313335373941434 5474951535557596163656769717375777981838 5878991939597991011031051071091111131151 1711912112312512712913113313513713914114 3145147149151153155157159161163165167169 1711731751771791811831851871891911931951 9719920120320520720921121321521721922122 3225227229231233235237239241243245247249 2512532552572592612632652672692712732752 7727928128328528728929129329529729930130 3305307309311313315317319321323325327329 3313333353373393413433453473493513533553 5735936136336536736937137337537737938138 3385387389391393395397399401403405407409 4114134154174194214234254274294314334354 3743944144344544744945145345545745946146 3465467469471473475477479481483485487489 4914934954974995015035055075095115135155 1751952152352552752953153353553753954154 3545547549551553555557559561563565567569 5715735755775795815835855875895915935955 9759960160360560760961161361561761962162 3625627629631633635637639641643645647649 6516536556576596616636656676696716736756 7767968168368568768969169369569769970170
1
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
28.06.2022, 23:57
gunslinger, изящно!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2022, 23:57
Помогаю со студенческими работами здесь

Определить, какая цифра находится в k-ой позиции последовательности, где выписаны подряд все двузначные числа
Помогите пожалуйста.. Совсем не могу разобраться что к чему...Спасибо дано целое число k. определить какая цифра находиться в k-ой...

Вывести, какая цифра стоит на месте с номером X в указанной последовательности
Выпишем все двузначные числа в одну последовательность -- 101112131415161718192021...9899. Вводится число X (1&lt;=X&lt;=180). Вывести,...

Определить какая цифра находится на k-ой позиции набора 10,11,.,99
Определить какая цыфра на k-ой позиции набора 10,11,.,99

Подсчитать количество цифр в числе и определить, какая цифра стоит в разряде с номером i
Дано натуральное число n. Требуется подсчитать количество цифр числа и определить, какая цифра стоит в разряде с номером i (разряды ...

Определить, какая цифра чаще всего встречается в десятичной записи элементов последовательности
На вход программы поступает последовательность из N натуральных чисел. Требуется определить, какая цифра чаще всего встречается в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru