![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.02.2012
Сообщений: 32
|
![]()
Всем доброго времени суток. Люди добрые имеется задание:
На промежутке от -128 до 127 Подсчитать количество таких пар чисел X и Y, что (|Х|-|У|)mod4 =0 Ответ вывести на экран Мои наработки в Delphi с asm вставкой: Код:
Данный код представленный выше написанный asm вставкой, SI= 8320раз Помогите разобраться где что не так считаю ((((( С асм новичек, только разбираюсь. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
![]()
На этом промежутке 256 чисел, по 64 с каждым остатком от деления модуля на 4. Разность чисел делится на 4, если у обоих одинаковые остатки от деления на 4. В каждой такой группе будет
C(64; 2) = 63 * 64 / 2 = 2016 чисел. Итого 2016 * 4 = 8064. Так что у тебя и на Delphi неправильно. А на ассемблере я что-то не понял, что такое: Код:
Код:
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 04.02.2012
Сообщений: 32
|
![]()
Поразмышляв с листочком и ручкой пришел к следующему выводу:
На промежутке от -128 до 127 Подсчитать количество таких пар чисел X и Y, что (|Х|-|Y|)mod 4 =0[list=1][*]то, что используется модуль для Х и Y говорит о том, что можно подсчитать задание для чисел от 0 до 128, а потом умножить результат на четыре. Х | Y | N + | + | 1 + | - | 2 - | + |3 - | - |4 То, что от разницы Х и Y ищется остаток от деления на 4 равный нулю говорит о том, что разницу нужно искать у чисел, которые кратны четырем, таких чисел 129/4=32 пар чисел X и Y, таких что (|Х|-|Y|)mod 4 =0 будет 32^2=1024, умножаем 1024*4=4096. Так ли это ? |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
antoxamad,
ты хоть бы автора указывал, и сайт с которого скопировал, "поразмышлял он с листочком и ручкой и пришел к следующему выводу", тупо сдул и выдал за своё ![]() Последний раз редактировалось Mikl___; 12.04.2013 в 15:35. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
нет. например:
x = 7 y = -3 (|7| - |-3|) mod 4 = (4) mod 4 = 0 в коде это можно реализовать примерно так: Код:
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 04.02.2012
Сообщений: 32
|
![]() Цитата:
за что ему огромное спасибо, только на этом форуме возникают разногласия с задачей. Пока не могу сообразить почему |
|
![]() |
![]() |
![]() |
#7 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
в принципе, Somebody абсолютно прав. для того, чтобы узнать сколько таких пар не обязательно проверять, можно и "на листочке посчитать".
а код из первого поста дает на 256 больше, потому что цикл по bx начинается не со следующего за ax значения, а с ax (тривиальный случай x = y). Последний раз редактировалось f.hump; 12.04.2013 в 17:58. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 04.02.2012
Сообщений: 32
|
![]()
Дорогие форумчане, огромное спасибо всем тем кто участвовал в помощи. Разобрался получилось следующее (может кому надо будет):
Код:
Тему можно считать закрытой. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задание на C - разобраться с классом, хранящим в себе дату | world12_tk | Помощь студентам | 7 | 08.10.2011 00:15 |
Интересное задание = ) | Этотак | Помощь студентам | 1 | 10.06.2011 23:25 |
Для кого то интересное задание | Димко90 | Компоненты Delphi | 2 | 12.12.2010 11:42 |
Очень интересное и творческое задание | Димко90 | Помощь студентам | 0 | 12.12.2010 03:41 |
Интересное задание | MaTpOc12 | Помощь студентам | 3 | 20.10.2010 18:10 |