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

Определение К-й цифры последовательности. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Znak
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 3
13.10.2009, 22:09     Определение К-й цифры последовательности. #1
Помогите плз.
Задача: Дано натуральное К. Определить К-ю цифру последовательности 1234567891011121314..., в которой выписаны подряд все натуральные числа.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
13.10.2009, 23:58     Определение К-й цифры последовательности. #2
Цитата Сообщение от Znak Посмотреть сообщение
1234567891011121314
представлено массивом, пользовательским типом длинного целого или как?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 06:11     Определение К-й цифры последовательности. #3
Цитата Сообщение от M128K145 Посмотреть сообщение
представлено массивом, пользовательским типом длинного целого или как?
Макс, думаю тут просто математика и не требуется эту последовательность получить и потрогать, хотя... надо подумать
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.10.2009, 06:19     Определение К-й цифры последовательности. #4
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
#include <iostream.h>
#include <process.h>
#include <windows.h>
int i, temp, k, a;
int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Ââåäèòå ÷èñëî K: "<<endl;
    cin>>k;
    for(i=1; k>0; i++)
    {
        a=0;
        temp=i;
        while(temp>0)
        {
            temp/=10;
            a++;
        }
        k-=a;
    }
    i--;
    while(k!=0)
    {
        i/=10;
        k++;
    }
    temp=i%10;
    cout<<"K-ГІГ*Гї öèôðГ* = "<<temp<<endl;
    system("pause");
    return 0; 
}
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 07:46     Определение К-й цифры последовательности. #5
вот что получилось
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
40
41
42
43
#include <iostream>
#include <cmath>
 
using namespace std;
// Дано натуральное К. Определить К-ю цифру последовательности 
// 1234567891011121314..., в которой выписаны подряд все натуральные числа.
 
void main()
{ 
    int k;
    int n=1, counter=1, temp;
    cout<<"Enter K: "; cin>>k; 
 
//  for (int i=1; i<=k; i++)
//      cout<<i;
//  cout<<"...";
 
    if (k>=10)
    {
        temp=10;
        while (k>=temp)
        {
            k-=temp;
            ++n;
            temp=(int)pow(10,(float)n)*n;
        }
 
        temp=n*(int)pow(10,(float)n-1);
        while (k>=temp)
        {
            k-=temp;
            ++counter;
        }
 
        if (k%n)
            k/=2;
        else
            k=counter;
    }
 
    cout<<" number: "<<k<<endl;
    cout<<endl; system("pause");
}
Znak
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 3
14.10.2009, 20:19  [ТС]     Определение К-й цифры последовательности. #6
TanT, valeriikozlov, спасиб....а алгоритм хотябы кратенько описать можно...а то не понятно в некоторых местах...
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 20:41     Определение К-й цифры последовательности. #7
Znak, тебе который? давай я valeriikozlov способ опишу как понимаю, понравился мне его подход, да и покороче будет. в общем так, если чего Валера меня поправит
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
#include <iostream>
// #include <process.h> // тут я уже успел что-то под себя поправить, не совсем понял необходимость этой библиотеки
#include <windows.h> 
using namespace std;
int i, temp, k, a;
int main ()
{
       SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
        cout<<"Введите число K: "<<endl;
 
    // вычисляем число в котором нужно определить величину цифры
    for(i=1; k>0; i++)
    {
        a=0;
        temp=i;
        while(temp>0)   // цикл считает количество цифр в числе в 9ке - 1 цифра, в 10 - две и т.д. 
        {
            temp/=10;   // тут собственно эти цифры они же разряды вычисляются
            a++;
        }
        k-=a;           // отнимаем от искомого числа посчитанные разряды
    }
    i--; // в итоге получаем величину числа в котором надо найти цифру
 
    // если k у нас отрицательное, то искомая цифра находится левее
    while(k!=0)
    {
        i/=10;      // сдвигаемся на нужный разряд
        k++;
    }
    temp=i%10;      // получаем значение цифры
     cout<<"K-тая цифра = "<<temp<<endl;    // вывод
    system("pause");
    return 0; 
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.10.2009, 20:48     Определение К-й цифры последовательности. #8
Мне кажется по своей программе мне лучше не коментировать код, а просто описать принцип вычисления.
Итак в самом главном цикле "for(i=1; k>0; i++)" перебираем переменную i, одновременно для каждого i вычисляем количество цифр (например i=228, то количество цифр для этого i будет 3) и сохраняем в переменной "a". Затем вычитаем количество цифр очередного i из переменной "k". Так вот: как только k ,будет меньше или равно 0, то значит эта нужная нам цифра находится в текущем i-1. Последний кусок кода:
C++
1
2
3
4
5
        while(k!=0)
        {
                i/=10;
                k++;
        }
это уточнение какая именно нужная нам цифра из числа i-1.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
14.10.2009, 21:15     Определение К-й цифры последовательности. #9
ага, очень мне это вариант понравился. а я в математику полез.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2014, 21:48     Определение К-й цифры последовательности.
Еще ссылки по теме:

C++ Определение цифры
Определение монотонности последовательности C++
Определение цифры слева направо C++

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

Или воспользуйтесь поиском по форуму:
assofpresident
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 4
08.01.2014, 21:48     Определение К-й цифры последовательности. #10
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
#include <iostream>
#include <conio.h>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int x, k, c = 0, i = 0;//c - число знаков
    
    cout<<"Введите порядок цифры: ";
    cin>>k;
 
    while(c<k)
    {
        x = i+1;
        cout<<x;
        while(x)
        {
            c++;
            if(c==k)
            {
                cout<<"k - я цифра: "<<x%10;
                _getch();
                return 0;
            }
            x/=10;
        }
        i++;
    }
    _getch();
    return 0;
}
Yandex
Объявления
08.01.2014, 21:48     Определение К-й цифры последовательности.
Ответ Создать тему
Опции темы

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