|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Вопросы по задачам на С++ |
|
|
C/C++ - Вопросы по задачам на С++
|
Пользователь Сообщения: 64 |
Доброго времени суток, ув. форумчане! Создал себе отдельную тему так как прогнозирую решать много задачек на С++
![]() Подскажите, как реализовать такую задачку, ато чтото никак не могу допереть: Условие Пусть n — любое натуральное число, а последовательность i1, i2, ... , in сожержит все натуральные числа от 1 до n включительно. Нарушением порядка в такой последовательности называют систему таких двух неравенств, что оправдываются: j < k и ij > ik. Если последовательность возрастает, то количество нарушений порядка равно 0. Если последовательность спадает, то такое количество равно n(n – 1)/2. Во всех остальных случаях это количество расположена между указанными величинами. Задание Установите четность количества нарушений порядка последовательности. Входящие данные В первой строке входного файла указано количество последовательностей m. Каждый из следующих m строк содержит натуральное число n и последовательность различных натуральных чисел от 1 до n включительно: i1, i2, ... , in при 2 ≤ m ≤ 100, 2 ≤ n ≤ 1 048 576. У 50 % тестов n ≤ 4096. Исходящие данные Единственная строка выходного файла должна содержать число в шестнадцатеричной системе счисления, соответствующее двоичному числу которое образовано из m символов - нулей или единиц - без пробела: k-й символ строки - это остаток от деления на 2 числа нарушений порядка k-й последовательности, заданной (k + 1)-й строкой входного файла. Пример input.dat: 5 3 1 2 3 3 2 3 1 3 1 3 2 4 2 3 4 1 4 3 4 1 2 output.sol: 6 Объяснение: (00110)2 = (6)16 |
|
Отправлено: 21:12, 17-10-2011 |
Misanthrope Сообщения: 474
|
Профиль | Отправить PM | Цитировать Цитата Prof:
по сути - где попытки собственного решения? |
|
------- Отправлено: 22:14, 17-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Hector, я и не прошу уже готовое решение, я прошу только идею и прекрасно понимаю что готовенькое ждать не стоит
я вобщето планирую только спрашивать то что непонятно, а не трубить "Помогите! Сделайте!" а тему создал, потомучто как писалось выше "прогнозирую решать много задачек на С++" и на каждную мелочь по задачке- отдельная тема? только буду засорять форум. я не понимаю, почему Вы так сразу категорично настроены против меня, я же не прошу уже готовые коды решений |
Последний раз редактировалось Prof, 17-10-2011 в 22:28. Отправлено: 22:20, 17-10-2011 | #3 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Prof, как вы правильно выразились,
Цитата Prof:
-- Почитай, поразмышлял. В чем возникла проблема? Задача в достаточной степени линейна. Надо только внимательно отнестись к переменным,и правильно понять, что ожидается на выходе. Все необходимое расписано уже в условии. -- А кстати, ради интереса. Попробуй составить алгоритм используя "нарезку слов и цитат" из задания. |
|
------- Отправлено: 22:59, 17-10-2011 | #4 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Сделал через сортировку, то есть сколько раз переставило соседние числа, столько и нарушений. Осталось только перевести из dec в hex.
Двоичный код получаю вот таким циклом: Каким образом результат этого цикла можно занести в одну переменную? Updated: сделал, кому интересно: |
|
Последний раз редактировалось Prof, 22-10-2011 в 22:25. Отправлено: 17:11, 20-10-2011 | #5 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Ещё один вопрос. Есть такая программка для переведения из 2 системы счисления в 16:
#include <stdio.h> #include <conio.h> int main () { char c; int result=0; while(scanf("%c",&c) ) { if( (c<'0') || (c > '1') ) break; result<<=1; result+=c-'0'; }; printf("\n%d",result); } |
Последний раз редактировалось Prof, 23-10-2011 в 14:28. Отправлено: 22:24, 22-10-2011 | #6 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Prof, а можно спросить?
а вот это Цитата Prof:
Конкретно вот это: void ? Что це за зверь? |
|
------- Отправлено: 22:55, 22-10-2011 | #7 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать lxa85, я конечно чайник, но насколько понимаю это спецификатор типа который не возвращает значения (не требует return).
|
Отправлено: 12:07, 23-10-2011 | #8 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:36, 23-10-2011 | #9 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Prof:
В каком месте программы мы должны получить результат? ---- Посмотрел на код еще раз. Я его не понимаю, чисто зрительно в нем есть ошибка. Какие-то resultы, какие-то _tmain, циклы while вообще не понятно что делает. Как это все вообще должно работать? Prof, перепиши еще раз, с принятыми нормами обозначения и с соблюдением логики выполнения. В противном случае тебе придется расписывать логику выполнения в комментариях, т.к. сейчас, понять какая переменная куда и зачем отправляется я не могу. |
|
------- Отправлено: 13:27, 23-10-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Вопросы по DNS | Guest | Сетевые технологии | 10 | 05-05-2013 14:29 | |
Прочее - Вопросы по wi-fi | Aleks_267 | Сетевое оборудование | 2 | 15-09-2009 13:24 | |
Вопросы от ВикторииС. | ВикторияС | Видео и аудио: обработка и кодирование | 33 | 18-03-2009 10:22 | |
Вопросы о RunOnceEx | Necrolog | Автоматическая установка Windows 2000/XP/2003 | 5 | 28-02-2006 22:11 | |
PROXY-сервера ---- вопросы, вопросы, вопросы | Galosh | Хочу все знать | 2 | 09-07-2003 00:57 |
|