В массиве имеется n различных чисел из диапазона [1; n+1] (т. е. встречаются
все числа, кроме одного). Написать программу, которая выясняет какого
именно элемента не хватает (сложность О (n)).
Другие языки программирования и технологии
Помогите, пожалуйста, написать программу на C++.
написать то не проблема... Только что за условие. <Какого
именно элемента не хватает >
Я даже стесняюсь спросить чем его на истину проверять?: -)
именно элемента не хватает >
Я даже стесняюсь спросить чем его на истину проверять?: -)
Максим Жуковец
Я вообще не шарю)
#include <iostream>
using namespace std;
unsigned skipped(unsigned* v, const size_t n) {
auto sv = 0ULL;
for (auto i = 0U; i < n; ++i) sv += v[i];
auto s = (n + 1ULL) * (n + 2ULL) / 2ULL;
return unsigned(s - sv);
}
int main() {
unsigned box[] = { 1, 3, 5, 4, 9, 6, 8, 2 };
auto number = skipped(box, size(box));
cout << "Result: " << number;
cout.put('\n');
system("pause");
}
using namespace std;
unsigned skipped(unsigned* v, const size_t n) {
auto sv = 0ULL;
for (auto i = 0U; i < n; ++i) sv += v[i];
auto s = (n + 1ULL) * (n + 2ULL) / 2ULL;
return unsigned(s - sv);
}
int main() {
unsigned box[] = { 1, 3, 5, 4, 9, 6, 8, 2 };
auto number = skipped(box, size(box));
cout << "Result: " << number;
cout.put('\n');
system("pause");
}
bool isBelong(vector < int > arr, int num)
{
for(auto& & it = arr.begin(); it != arr.end();; ++it) {
if (*it == num) {
return true;
}
return false;
}
int main()
{
....
for(int i = 1; i < = n+1; ++i) {
if (!isBelong(arr, i)) {
k = i;
break;
}
....
}
{
for(auto& & it = arr.begin(); it != arr.end();; ++it) {
if (*it == num) {
return true;
}
return false;
}
int main()
{
....
for(int i = 1; i < = n+1; ++i) {
if (!isBelong(arr, i)) {
k = i;
break;
}
....
}
Александр Иванов
cсложность этого решения O(n^2)
суммируешь все числа от 1 до n + 1 - пусть это будет total_sum - сложность O(n)
суммируешь все числа массива - назовем это array_sum - сложность O(n)
число которое ищем = total_sum - array_sum
общая сложность O(n) + O(n) = 2O(n) (константу можно опустить т. е. O(n))
суммируешь все числа массива - назовем это array_sum - сложность O(n)
число которое ищем = total_sum - array_sum
общая сложность O(n) + O(n) = 2O(n) (константу можно опустить т. е. O(n))
Похожие вопросы
- Привет всем! Помогите, пожалуйста, написать программу в C++.
- Помогите пожалуйста написать программу на c++.
- Помогите пожалуйста написать программу на C#
- Помогите пожалуйста написать программу на c++. Циклически сдвинуть массив на k элементов влево.
- Помогите пожалуйста написать программу на c++. Упорядочить элементы одномерного массива по убыванию.
- Помогите пожалуйста написать программу на c++, или хотя бы скиньте ссылку, если не сложно, где можно найти.
- Помогите пожалуйста написать программу в с++
- Народ, помогите пожалуйста с программой в C#
- Помогите, пожалуйста, написать программу на делфи с ассемблерными вставками.
- Помогите, пожалуйста, написать программу на С++