Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85

Булева алгебра, самое сложное что я видел. H E L P Сложность over 90000000%

10.04.2013, 19:16. Показов 6357. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
≡ вот эта закарюка меня пугает,подскажите, что это?
и решите пожалуйста задачку
Требуется для заданных K N M и X найти количество пар чисел A и B таких, что A≡0 (mod N), B≡0 (mod M), 0≤A,B<2 K , A⊕B=X.

Формат входных данных

Первая строка содержит целые числа K N M и X (1≤K≤30, 1≤N,M,X≤2×10(в девятой)9 ).

Формат результата

Выведите искомое количество пар чисел.

Примеры

Входные данные Результат работы
3 1 2 5
4
Примечания

Искомые пары (1;4), (3;6), (5;0) и (7;2).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2013, 19:16
Ответы с готовыми решениями:

Что самое сложное в программировании на С++ для Вас?
Добрый вечер! В перерывах между общением с марсианами и постройкой петамобиля задаю здесь сущие вопросы. Расскажите, пожалуйста, какие...

Что самое сложное вы делали в паскале? Скиньте свои роботы пожалуйста
Что самое сложное вы делали в паскале? Скиньте свои роботы пожалуйста. Самые сложные

Булева алгебра
Помогите пожалуйста решить задания. Просто завтра контрольная, а в ДМ не очень шарю Правила, 5.16, 5.18. Задания набирать ручками....

59
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
10.04.2013, 19:25
Цитата Сообщение от yutr777 Посмотреть сообщение
≡ вот эта закарюка меня пугает,подскажите, что это?
читается как "тождественно равно"
0
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 19:36  [ТС]
Цитата Сообщение от ya_noob Посмотреть сообщение
читается как "тождественно равно"
а что оно обозначает?
0
 Аватар для abit
868 / 528 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
10.04.2013, 19:45
эта запись A≡0 (mod N) означает, что A делится на N без остатка (т.е. A должно быть кратно N)

собстна как найти количество пар мне в голову приходит только решение в лоб - сделать вложенный цикл по A и B в котором написать
C++
1
 if((A^B)==X) ++paircounter;
но может есть и более оптимальное решение, надо полистать комбинаторику и теорию чисел

собстна я бы написал вам решение в лоб, но что-то у вас в условии не сходится

тут
0≤A,B<2 K
сказано чётко, что A и B должны быть строго меньше 2K насолько я вижу
а ваши две пары из примера противоречат условию
(3;6) и (7;2)
в первом случае B=6=2*K (не меньше)
во втором случае A=7>2*K (больше)

проверьте условие
1
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 19:52  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
эта запись A≡0 (mod N) означает, что A делится на N без остатка (т.е. A должно быть кратно N)

собстна как найти количество пар мне в голову приходит только решение в лоб - сделать вложенный цикл по A и B в котором написать
C++
1
 if((A^B)==X) ++paircounter;
но может есть и более оптимальное решение, надо полистать комбинаторику и теорию чисел

собстна я бы написал вам решение в лоб, но что-то у вас в условии не сходится

тут


сказано чётко, что A и B должны быть строго меньше 2K насолько я вижу
а ваши две пары из примера противоречат условию
(3;6) и (7;2)
в первом случае B=6=2*K (не меньше)
во втором случае A=7>2*K (больше)

проверьте условие
условие верное...некоторые команды сдали эту задачу...я никак не могу(
0
 Аватар для abit
868 / 528 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
10.04.2013, 20:00
а, дошло)

вот в общем решение в лоб

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# include <iostream>
 
int main()
{
    unsigned int paircounter=0;
    unsigned int K,N,M,X;
    
    std::cin >> K >> N >> M >> X;
    
    for(unsigned int A = 0; A!=2*K; ++A)
     for (unsigned int B = 0; B!=2*K; ++B)
     if(((A^B)==X)&&(A%N==0)&&(B%N==0)) ++paircounter;          
    std::cout <<paircounter<<std::endl;;
    return 0;
 
}
Добавлено через 5 минут
все же искомые пары не те, что вы указали а
(0;5),(1;4),(4;1) и (5;0)

так и передайте составителям задач
0
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 20:01  [ТС]
Цитата Сообщение от abit Посмотреть сообщение
эта запись A≡0 (mod N) означает, что A делится на N без остатка (т.е. A должно быть кратно N)

собстна как найти количество пар мне в голову приходит только решение в лоб - сделать вложенный цикл по A и B в котором написать
C++
1
 if((A^B)==X) ++paircounter;
но может есть и более оптимальное решение, надо полистать комбинаторику и теорию чисел

собстна я бы написал вам решение в лоб, но что-то у вас в условии не сходится

тут


сказано чётко, что A и B должны быть строго меньше 2K насолько я вижу
а ваши две пары из примера противоречат условию
(3;6) и (7;2)
в первом случае B=6=2*K (не меньше)
во втором случае A=7>2*K (больше)

проверьте условие
я задал вопрос...это два в К-ой степени
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
10.04.2013, 20:03
yutr777, задача чрезвычайно простая, особенно, учитывая что k <= 30. Вот, если n,m,K < 10^18 уже другое дело
0
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 20:04  [ТС]
Цитата Сообщение от Ternsip Посмотреть сообщение
yutr777, задача чрезвычайно простая, особенно, учитывая что k <= 30. Вот, если n,m,K < 10^18 уже другое дело
решите пожалуйста, умоляю вас....я бы даже на колени стал...очень важно, чтобы вы помогли...Спасибо!
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
10.04.2013, 20:07
yutr777, для вашей задачи abit уже написал решение
0
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 20:08  [ТС]
Цитата Сообщение от Ternsip Посмотреть сообщение
yutr777, для вашей задачи abit уже написал решение
но там не 2*k а 2^k
0
 Аватар для abit
868 / 528 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
10.04.2013, 20:15
Цитата Сообщение от yutr777 Посмотреть сообщение
но там не 2*k а 2^k
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# include <iostream>
 
int main()
{
    unsigned int paircounter=0;
    unsigned int K,N,M,X;
    
    std::cin >> K >> N >> M >> X;
    
    for(unsigned int A = 0; A!=2<<(K-1); ++A)
     for (unsigned int B = 0; B!=2<<(K-1); ++B)
     if(((A^B)==X)&&(A%N==0)&&(B%M==0)) 
        ++paircounter; 
 
    std::cout <<paircounter<<std::endl;;
    return 0;
 
}
Добавлено через 1 минуту
всё, верно... с парами тоже
так можно поглядеть на эти пары:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# include <iostream>
 
int main()
{
    unsigned int paircounter=0;
    unsigned int K,N,M,X;
    
    std::cin >> K >> N >> M >> X;
    
    for(unsigned int A = 0; A!=2<<(K-1); ++A)
     for (unsigned int B = 0; B!=2<<(K-1); ++B)
     if(((A^B)==X)&&(A%N==0)&&(B%M==0)) 
      {
        std::cout <<"("<<A<< ","<<B<<")"<<std::endl;;
        ++paircounter; 
      }
    std::cout <<paircounter<<std::endl;;
    return 0;
 
}
старый мой бред не читайте) там ошибка была... не углядел, а здесь уже для 2^K
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
10.04.2013, 20:18
yutr777, решается она так: Заметим, что в двоичной записи числа X: в i-м разряде если стоит 0, то в числах a,b из всех пар, на данной позиции должны стоять либо 0,0 либо 1,1, если там 1 то должны стоять 1,0 либо 0,1 таким образом можно комбинаторно определить сколько всего же таких чисел. Ну раз вам это так нужно я попробую))

Добавлено через 37 секунд
abit, введите у себя k = 30
1
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 20:20  [ТС]
Цитата Сообщение от Ternsip Посмотреть сообщение
yutr777, решается она так: Заметим, что в двоичной записи числа X: в i-м разряде если стоит 0, то в числах a,b из всех пар, на данной позиции должны стоять либо 0,0 либо 1,1, если там 1 то должны стоять 1,0 либо 0,1 таким образом можно комбинаторно определить сколько всего же таких чисел. Ну раз вам это так нужно я попробую))

Добавлено через 37 секунд
abit, введите у себя k = 30
спасибо)
просто это действительно вопрос жизни и смерти
0
 Аватар для abit
868 / 528 / 148
Регистрация: 03.02.2013
Сообщений: 1,845
10.04.2013, 20:25
Цитата Сообщение от Ternsip Посмотреть сообщение
Добавлено через 37 секунд
abit, введите у себя k = 30
ну я предупреждал, что это влоб... работать будет, но медленно
если это олимпиадная задача - то там есть ограничения на время и так делать не стоит
конечно предпочтительнее комбинаторику влепить, но тогда мне не совсем понятно как получить сами пары чисел, ну в общем как сделаете, погляжу )
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
10.04.2013, 20:30
yutr777, понимаете, в таком случае задача действительно сложная и требует некоторое время для решения.
Но сложность её начинается вот откуда: После того, как мы заметим, что если у нас для каждого разряда X найдётся всего 2 варианта разряда в таких парах, то логично, что всего у нас таких чисел 2^(длина x в двоичной системе), но это без учёта следующих факторов: мы не отбросили числа с лидирующими нулями и не отбросили числа, которые кратны n и m и это и есть проблема.

Добавлено через 3 минуты
я там подправил
0
 Аватар для yutr777
8 / 8 / 3
Регистрация: 07.04.2013
Сообщений: 85
10.04.2013, 20:36  [ТС]
Цитата Сообщение от Ternsip Посмотреть сообщение
yutr777, понимаете, в таком случае задача действительно сложная и требует некоторое время для решения.
Но сложность её начинается вот откуда: После того, как мы заметим, что если у нас для каждого разряда X найдётся всего 2 варианта разряда в таких парах, то логично, что всего у нас таких чисел 2^n, но это без учёта следующих факторов: мы не отбросили числа с лидирующими нулями и не отбросили числа, которые больше n и m и это и есть проблема.
можно немного поточнее объяснить вот про пары чисел,т.е. я перевожу в двоичную систему дальше смотрю что стоит на i-ом месте(что такое i?), если 0,0 и там и там то Ок идем дальше....если 1,1 я не понял(((
вообщем чуть чуть больше объясните или примерчик киньте)

Добавлено через 4 минуты
просто я до конца не могу понять, что именно и как нужно считать
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
10.04.2013, 20:38
Первое упрощение: Из сравнимости по модулю следует, что A = k1*N B=k2*M. Так что скакать можем с шагом N и M. Второе:
Цитата Сообщение от yutr777 Посмотреть сообщение
A⊕B=X
Точно не уверен, но мне почему-то кажется, что если нам известны A и X, то мы можем вычислить B. И наверно будет так: B = A⊕X, т.е. нам достаточно скакать тока по A, а B вычислять по формуле. А далее проверяем B % M == 0. Как-то так, больше не придумал >_>
1
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
10.04.2013, 20:40
yutr777, Как видно на картинке, если нет ограничений (A mod N) == 0 и (B mod M) == 0 и A < 2^k и И B < 2^K что 2^(длина x в двоичной системе) и есть ответ
Миниатюры
Булева алгебра, самое сложное что я видел. H E L P Сложность over 90000000%  
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
10.04.2013, 20:48
Будет вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main( void )
{
  UINT64 K = 3, N = 1, M = 2, X = 5;
  UINT64 A, B;
 
  for (A = 0; A < 1 << K; A += N)
  {
    B = A ^ X;
    if (B % M == 0)
      cout << '(' << A << ',' << B << ')' << endl;
  }
  system("pause");
  return 0;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2013, 20:48
Помогаю со студенческими работами здесь

Булева алгебра
Найти значение логического выражения: (x &lt; y) AND (x = z) при a) x = 0, y = 0, z = 0; б) x = 0, y = -8, z =...

Булева Алгебра
Ребят, помогите пожалуйста с работой, 1,2,7 сделал, с остальными не могу переварить.

Булева Алгебра
Проверти пожалуйста правильно ли выполнил минимизацию ? Меня сильно смущает (Х1Х2Х3) что не сокращается.

Булева Алгебра)
Помогите пожалуйста)Ни как не могу понять,как минимизировать то,что стоит в скобках Пускай НЕ-это ! х4*х5*(!х1*х2*х3+х1*!х2*!х3) или...

Булева алгебра
при умножении x на y по and(&amp;), получаем некое с, как потом зная с и x найти y ?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru