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

Ускорить работу программы

11.02.2016, 22:47. Показов 3577. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Лексикографический порядок чисел

(Время: 1 сек. Память: 16 Мб Сложность: 31%)
Натуральные числа от 1 до N упорядочены лексикографически. Например, для N=25 результат этого упорядочения будет таким: 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 3, 4, 5, 6, 7, 8, 9.

Требуется написать программу, которая определит, на каком месте оказалось число K.

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

два натуральных числа N и K, записанных через пробел (1 ≤ K ≤ N ≤ 104).

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

одно натуральное число – номер места, на котором оказалось число K.

Пример

№ // INPUT.TXT //OUTPUT.TXT
__//__________ //____________
1 // 25 17 // 9

ВОТ МОЙ КОД
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
44
45
46
#include<iostream>
#include<string.h>
#include <algorithm>  
#include<vector>
#include<stdio.h>
#include <string>
using namespace std;
string IntToStr(int x)
{
    char buf[10];
    sprintf(buf, "%d", x);
    return buf;
}
int main()
{
    int n;
    string m;
    cin >> n >> m;
    string ark[10000];
    int arr[10000];
    for (int i = 0; i < n; i++)
    {
        arr[i] = i + 1;
    }
    for (int i = 0; i < n; i++)
    {
        ark[i]= IntToStr(arr[i]);
    }
    for (int i = 0; i < n; i++)
    {
        for (int i = 0; i < n - 1; i++)
        {
            if (ark[i + 1] < ark[i])
            {
                swap(ark[i + 1], ark[i]);
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (m == ark[i])
        {
            cout <<i + 1;return 0;
        }
    }
}
у меня чуть более 1 секунды обрабатывается один из тестов,а надо ,чтобы прога укладывалась в 1 секунду .Кто знает,подскажите ,что тут можно в коде поправить,чтобы сработала побыстрее
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2016, 22:47
Ответы с готовыми решениями:

Подскажите пожалуйста как ускорить работу программы!
Есть задача :&quot;Во входном файле (вы можете читать данные из файла input.txt) записан текст. Словом считается последовательность непробельных...

Задача про рюкзак - ускорить работу программы
Вообщем есть алгоритм, который работает правильно за O(N*W), поэтому при больших значениях будет очень долго считать, нужно изменить так,...

Динамический массив, много циклов и простые числа. Как ускорить работу программы ?
Всем привет. Задание следующее: Кто нибудь вводит с клавиатуры число n и k, должен создастся массив из чисел от 1 до n, далее каждый...

5
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.02.2016, 23:02
Цитата Сообщение от yarik2550 Посмотреть сообщение
1 ≤ K ≤ N ≤ 104
Можно заранее отсортировать массив чисел для N=104.
Что бы найти номер числа K для какого-то любого N, достаточно в этом массиве найти число K и посчитать сколько чисел <=N находятся до него.

Добавлено через 3 минуты
Цитата Сообщение от yarik2550 Посмотреть сообщение
Кто знает,подскажите ,что тут можно в коде поправить,чтобы сработала побыстрее
Сделать нормальную сортировку, а не пузырьковую.
0
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43
11.02.2016, 23:03  [ТС]
подскажи какой-нибудь нормальный способ сортировки
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.02.2016, 23:06
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Сделать нормальную сортировку
Да и искать-то можно методом деления пополам...
И, имхо, если немножко подумать, то можно и без сортировки обойтись...

Добавлено через 1 минуту
Цитата Сообщение от yarik2550 Посмотреть сообщение
подскажи какой-нибудь нормальный способ сортировки
http://lmgtfy.com/?q=%D0%BC%D0... 0%BA%D0%B8
0
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43
11.02.2016, 23:39  [ТС]
Задачу решил ,создав не строковый массив , а вектор строковый ,и потом его отсортировал функцией sort
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
11.02.2016, 23:53
Цитата Сообщение от yarik2550 Посмотреть сообщение
Задачу решил
Браво!
Однако,
Цитата Сообщение от Байт Посмотреть сообщение
если немножко подумать, то можно и без сортировки обойтись..
Там же простая арифметика... Сколько чисел начинается на единицу...
Впрочем, я не настаиваю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2016, 23:53
Помогаю со студенческими работами здесь

Ускорить работу функций
Здравствуйте. Не подскажете как можно ускорить работу функций в цикле? А то линия получается прерывистой, когда быстро водишь мышкой. ...

Как ускорить работу?
Прога ещё не доработана, сейчас интересует именно графический режим, когда нажимается клавиша 1-4 один из 4-х квадратов должен...

Как ускорить работу с файлами?
Предполагается, что программа будет работать с файлами размера 300-500МБ. Эти обычные функции работают слишком медленно. Может быть стоит...

Как ускорить работу (поиск вхождений подстроки)?
//подсчет kf int NumberKF(string &amp;P, vector&lt;string&gt; &amp; F, const int f){ int kf =0; for(size_t i = 0; i &lt; f; ++i){ //обход по...

Можно ли как нибудь ускорить работу цикла for?
Подскажите пожалуйста - можно ли как нибудь ускорить работу цикла for? Заранее сильно благодарен!


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru