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

Minimum dot product

13.05.2016, 17:51. Показов 2605. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два вектора, следует найти минимальное число, которое получится при суммировании произведений чисел первого вектора на числа второго. Например для последовательностей (1, -3, -5) и (-2, 4, 1) результат будет -25, а для (23) и (39) 897. Но при вводе (99 999) и (99 999) дает 1409865409, хотя должно быть 9999800001. Наверное, что с типом данным напутал, но сам понять не могу где. Помогите пожалуйста.

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
27
28
29
30
31
32
33
34
35
36
#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric>
 
using std::vector;
 
long long min_dot_product(int n, vector<int> a, vector<int> b) {
    long long result = 0;
    if (n != 0)
    {
        std::sort(a.begin(), a.end());
        std::sort(b.begin(), b.end());
        std::reverse(a.begin(), a.end());
 
        for (long long int i = 0; i < n; i++) {
            result += a[i] * b[n - 1 - i];
        }
 
        result = std::inner_product(a.begin(), a.end(), b.begin(), 0);
    }
    return result;
}
 
int main() {
    int n;
    std::cin >> n;
    vector<int> a(n), b(n);
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }
    for (int i = 0; i < n; i++) {
        std::cin >> b[i];
    }
    std::cout << min_dot_product(n, a, b) << std::endl;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2016, 17:51
Ответы с готовыми решениями:

Написать функции для преобразования IP адреса из dot-decimal нотации в int и из int в dot-decimal нотацию
IP-адрес - это четверка a.b.c.d, где a, b, c, d целые числа из интервала . Требуется написать функции encode и decode: unsigned int...

Определите функцию lookupTitle : : String -> [Product] -> Maybe Product которая возвращает товар с заданным н
Реализуйте с помощью функций высшего порядка. В современных web-магазинах часто продают книги, видеокассеты и компакт-диски. База данных...

Зачем писать IEnumerable<string> product если можно написать var product?
зачем писать IEnumerable&lt;string&gt; product если можно написать var product? с какой целью использую IEnumerable,IEnumerable&lt;string&gt;?...

5
Модератор
Эксперт С++
 Аватар для zss
13772 / 10965 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
13.05.2016, 17:54
Подозреваю, что у векторов тоже надо задать тип long long
Вот так работает правильно:
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
27
28
29
30
__int64 min_dot_product(int n, vector<__int64> a, vector<__int64> b) {
    __int64 result = 0;
    if (n != 0)
    {
        std::sort(a.begin(), a.end());
        std::sort(b.begin(), b.end());
        std::reverse(a.begin(), a.end());
        for (int i = 0; i < n; i++) {
            result += a[i] * b[n - 1 - i];
        }
        __int64 t=0;
        result = std::inner_product(a.begin(), a.end(), b.begin(), t);
    }
    return result;
}
 
int main() {
    int n;
    std::cin >> n;
    vector<__int64> a(n), b(n);
    for (int i = 0; i < n; i++) {
        std::cin >> a[i];
    }
    for (int i = 0; i < n; i++) {
        std::cin >> b[i];
    }
    std::cout << min_dot_product(n, a, b) << std::endl;
    system("pause");
    return 0;
}
Обратите внимание на
C++
1
2
    __int64 t=0;
        result = std::inner_product(a.begin(), a.end(), b.begin(), t);
Без этой поправки тоже не работатет
0
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 6
13.05.2016, 18:42  [ТС]
Спасибо большое, правда работает. В QT все замечательно, но при использовании g++ -pipe -O2 -std=c++11 в cygwin
выдается такая ошибка

Compile error:
b'qwerty.cpp:8:1: error: \'__int64\' does not name a type\n __int64 min_dot_product(int n, vector<__int64> a, vector<__int64> b) {\r\n ^\nqwerty.cpp: In function \'int main()\':\nqwerty.cpp:27:12: error: \'__int64\' was not declared in this scope\n vector<__int64> a(n), b(n);\r\n ^\nqwerty.cpp:27:19: error: template argument 1 is invalid\n vector<__int64> a(n), b(n);\r\n ^\nqwerty.cpp:27:19: error: template argument 2 is invalid\nqwerty.cpp:29:24: error: invalid types \'int[int]\' for array subscript\n std::cin >> a[i];\r\n ^\nqwerty.cpp:32:24: error: invalid types \'int[int]\' for array subscript\n std::cin >> b[i];\r\n ^\nqwerty.cpp:34:41: error: \'min_dot_product\' was not declared in this scope\n std::cout << min_dot_product(n, a, b) << std::endl;\r\n ^\nqwerty.cpp:35:20: warning: ignoring return value of \'int system(const char*)\', declared with attribute warn_unused_result [-Wunused-result]\n system("pause");\r\n ^\n'

Это можно как-нибудь обойти?
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
13.05.2016, 18:48
используйте int64_t из cstdint
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12936 / 6803 / 1821
Регистрация: 18.10.2014
Сообщений: 17,214
13.05.2016, 19:04
Простите, а что за странные манипуляции происходят в коде? Зачем в каком-то цикле вычисляется величина result, если результат этих вычислений все равно будет проигнорирован и перекрыт результатом inner_product?
0
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 6
13.05.2016, 22:08  [ТС]
Спасибо большое, все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2016, 22:08
Помогаю со студенческими работами здесь

Определите функцию lookupTitles : : [String] -> [Product] -> [Product]
Реализуйте с помощью функций высшего порядка. В современных web-магазинах часто продают книги, видеокассеты и компакт-диски. База данных...

Graphviz. Ошибка "dot: can't open dot"
Здравствуйте. Пытаюсь разобраться с Graphviz для визуализации графа, в интернете был найден такой код: using System; using...

minimum divisor
Minimum divisor. Find the smallest integer divisor of X greater than 1 (It is guaranteed that X &gt; 1). Example input Output 4 2 ...

Range Minimum Query
Компания Giggle открывает свой новый офис в Судиславле, и вы приглашены на собеседование. Ваша задача — решить поставленную задачу. ...

Range Minimum Query
Вам нужно создать структуру данных, которая представляет из себя массив целых чисел. Изначально массив пуст. Вам нужно поддерживать две...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
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 Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru