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

Найти количество x, y, z которые в диапазоне от L до R включительно (Java -> C++)

13.08.2021, 18:34. Показов 1190. Ответов 3

Студворк — интернет-сервис помощи студентам
Дана задача нужно найти количество x,y,z которые в диапазоне от l до r (включительно) и чтоб выполнялось условие
x | y == y ^ z . Если поменять местами x,y,z то это будут считаться разные варианты. Ограничения 5 * 10 (в шестой степени). есть решение на java перепишите пж на с++. Вот код на java
Кликните здесь для просмотра всего текста
https://pastebin.com/CFkMsyDw.
Java
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import java.io.*;
import java.util.*;
 
public class bits_vd_n {
 
    static final int bits = 29;
 
    static int[] biggest = new int[bits];
    static {
        Arrays.fill(biggest, 1);
    }
 
    HashMap<String, Long> map = new HashMap<>();
 
    int[] getBitNumber(int l) {
        int[] res = new int[bits];
        for (int i = 0; i < bits; i++) {
            res[i] = l % 2;
            l /= 2;
        }
        return res;
    }
 
    long calc(int num, int[] g1, int[] g2, int[] g3) {
        if (num == 0) {
            return 1;
        }
        String index = num + " " + Arrays.toString(g1) + " "
                + Arrays.toString(g2) + " " + Arrays.toString(g3);
        if (map.containsKey(index)) {
            return map.get(index);
        }
        long ans = 0;
        int first = g1[num - 1];
        for (int second = 0; second <= 1; second++) {
            int third = (first | second) ^ second;
            if (first <= g1[num - 1] && second <= g2[num - 1]
                    && third <= g3[num - 1]) {
                ans += calc(num - 1, (first != g1[num - 1]) ? biggest : g1,
                        (second != g2[num - 1]) ? biggest : g2,
                        (third != g3[num - 1]) ? biggest : g3);
            }
        }
        map.put(index, ans);
        return ans;
    }
 
    public long solve(int l, int r) throws IOException {
        l--;
        int[][] borders = new int[2][0];
        borders[0] = getBitNumber(l);
        borders[1] = getBitNumber(r);
        long ans = 0;
        for (int st = l; st <= r; st++) {
            for (int i = 0; i < 4; i++) {
                long sign = Integer.bitCount(i) % 2 == 0 ? 1 : -1;
                ans += sign
                        * calc(bits, getBitNumber(st), borders[i % 2],
                                borders[i / 2 % 2]);
            }
        }
        return ans;
    }
 
    final String fileName = "bits_vd_".split("_")[0];
 
    public void run() throws IOException {
        br = new BufferedReader(new FileReader(fileName + ".in"));
        out = new PrintWriter(fileName + ".out");
        out.println(solve(nextInt(), nextInt()));
        out.close();
        br.close();
    }
 
    public static void main(String[] args) throws IOException {
        new bits_vd_n().run();
    }
 
    BufferedReader br;
    StringTokenizer str;
    PrintWriter out;
 
    String next() throws IOException {
        while (str == null || !str.hasMoreTokens()) {
            str = new StringTokenizer(br.readLine());
        }
        return str.nextToken();
    }
 
    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }
 
    long nextLong() throws IOException {
        return Long.parseLong(next());
    }
 
    double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }
 
}

Помогите пж.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2021, 18:34
Ответы с готовыми решениями:

Найти количество целых чисел от a до b включительно, которые делятся на 7
Найдите количество целых чисел от a до b включительно, которые делятся на 7 не могу решить

Найти количество целых чисел от а до b включительно, которые делятся на 12 (доработка кода)
Найти количество целых чисел от а до b включительно, которые делятся на 12. Что не так написал? Dim a,b,i as Integer a=TextBox1.Text ...

Определить количество нечётных чисел в диапазоне от A до B включительно
Даны два целых числа A и B. Требуется определить количество нечётных чисел в диапазоне от A до B включительно. Входные данные Ввод...

3
Заблокирован
14.08.2021, 00:21
Цитата Сообщение от Misha336 Посмотреть сообщение
в диапазоне от l до r (включительно)
это сколько?
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
14.08.2021, 01:51
RahatLukum,
l -r же. Ясно как божий день.

Добавлено через 9 минут
r - l вернее.
0
Заблокирован
14.08.2021, 04:44
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    int l=0,r=10;
    cout<<"l r: ";
    cin>>l>>r;
    int n=0;
    for(int x=l; x<=r; x++)
        for(int y=l; y<=r; y++)
            if(y!=x)
                for(int z=l; z<=r; z++)
                    if(z!=x && z!=y)
                        if((x|y)==(y^z))
                        {
                            //cout<<x<<" "<<y<<" "<<z<<endl;
                            n++;
                        }
    cout<<n<<endl;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2021, 04:44
Помогаю со студенческими работами здесь

Требуется вывести значения в диапазоне от -5 до 5 включительно и подсчитать их количество
Дан массив из 50 элементов, значения которых формируются случайно и лежат в диапазоне от -50 до 49 включительно. Требуется вывести значения...

Найти количество таких чисел в диапазоне [a;b], которые являются точными квадратами
Пожалуйста, помогите написать программу на С Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые являются точными...

В матрице A (mxn) найти количество элементов, которые содержат значения в диапазоне от-N до N
В матрице A (mxn) найти количество элементов, которые содержат значения в диапазоне от-N до N, где N - действительное число, считанное с...

Из одного массива скопировать в другой массив значения в диапазоне от -5 до 5 включительно и подсчитать их количество
•Дан массив из 50 элементов, значения которых формируются функцией random и лежат в диапазоне от -50 до 49 включительно. Требуется из...

Вводятся числа a и b. Найти количество таких чисел в диапазоне [a;b], которые не принадлежат отрезку [3;5]
Доброго дня Всем. Помогите разобраться, кто может. Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru