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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sonik_20014
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 9
#1

Битные маски - C++

11.01.2014, 01:03. Просмотров 340. Ответов 4
Метки нет (Все метки)

Найти все натуральные числа k <50 такие, что выражение 2 * 36n + k * 23n +1 - 1 при всех n (n <5) делится на 7. Сформировать из найденных цифр множество А.

Помогите пожалуста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 01:03     Битные маски
Посмотрите здесь:

Софт 16-битные программы
C++ [C++] 24-битные BMP
C++ Разделить содержимое файла на 64 битные блоки
Windows XP 64 и 32 битные ОС
Размытие изображения наложением маски C++
Создать множество , используя битовые маски. (Дописать код) C++
C++ Встроенный asm и 64-битные регистры
64-х и 32-х битные системы C++
16-битные числа C++
C++ Получить из одной матрицы другую исходя из графической маски
64 битные типы данных в devC++ C++
Как преобразовать текст на 64-битные блоки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kidpoker
6 / 5 / 0
Регистрация: 02.08.2012
Сообщений: 16
11.01.2014, 01:33     Битные маски #2
Мб я что-то не понял...

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
#include <conio.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    /*
    Найти все натуральные числа k <50 такие, что 
    выражение 2 * 36n + k * 23n +1 - 1 при всех n (n <5) делится на 7. Сформировать из найденных цифр множество А.
    */
    int set=0;
    int a[50];
    int res=0;
 
    for(int k=0; k<50; k++){
        for(int n=0; n<5; n++){
            int var=(2*36*n)+(k*23*n)+1-1;
            if(var%7==0)set=1;else set=0;
        }
 
        if(set==1)a[res]=k, res++, set=0, printf("%d \n",k);
    }
 
    getch();
 
    return 0;
}
sonik_20014
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 9
11.01.2014, 01:44  [ТС]     Битные маски #3
здесь формула не та, должна бить 2*pow(3,(6*n).)+k*pow(2,(3*n+1).)-1
то есть должно быть 3 в степени 6n, а 2 в степени 3n+1
kidpoker
6 / 5 / 0
Регистрация: 02.08.2012
Сообщений: 16
11.01.2014, 01:55     Битные маски #4
Выдает, что таких чисел нет, разве что n может быть float
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
#include <conio.h>
#include <math.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    int set=0;
    int a[50];
    int res=0;
 
    for(int k=0; k<50; k++){
        for(int n=0; n<5; n++){
            int var=(2*pow(3.,6*n))+k*pow(2.,3*n+1)-1;
            printf("var = %d \n",var);
            if(var%7==0)set=1;else set=0;
        }
 
        if(set==1)a[res]=k, res++, set=0, printf("%d \n",k);
    }
 
    printf("end");
 
    getch();
 
    return 0;
}
sonik_20014
0 / 0 / 0
Регистрация: 08.01.2014
Сообщений: 9
11.01.2014, 14:01  [ТС]     Битные маски #5
Это должна быть работа с битовыми масками с использованием:
Стандартные операции над множествами и выражения, соответствующие им при работе с масками.
 Объединение множеств: A | B
 Пересечение множеств: A & B
 Разность множеств: A & ~ B
 Дополнение множества: ALL_BITS ^ A (здесь ALL_BITS - маска, в которой все биты, соответствующие элементам домена установлены в 1)
 Добавление i-того элемента в множество (установление и-го бита): A | = 1 << i
 Удаление i-го элемента: A & = ~ (1 << i)
 Проверка, и-й элемент принадлежит множеству (A & (1 << i))! = 0
Yandex
Объявления
11.01.2014, 14:01     Битные маски
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru