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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
#1

Обратный корень - C++

04.11.2012, 20:40. Просмотров 2549. Ответов 20
Метки нет (Все метки)

Пожалуйста, помогите решить задачу, не получается уже месяц (если решать с массивами, то нужно создавать по условию задачи массив размером от 0 до 10 в 18 степени - получается слишком большой массив).

Если кто догадывается, то пожалуйста пришлите код к непокорной задаче , не дающая покоя. Буду очень благодарен.


1001. Обратный корень
Ограничение времени: 2.0 секунды
Ограничение памяти: 16 МБ

Эта задача настолько проста, что авторы даже поленились сочинить для нее условие!
Исходные данные
Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ.
Результат
Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.

Пример
исходные данные
1427 0

876652098643267843
5276538

результат

2297.0716
936297014.1164
0.0000
37.7757
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.11.2012, 21:00     Обратный корень #2
Цитата Сообщение от лыс Посмотреть сообщение
если решать с массивами, то нужно создавать по условию задачи массив размером от 0 до 10 в 18 степени - получается слишком большой массив
Вы неправильно поняли условие задачи. Это значение чисел лежит в указаном диапазоне. А размер массива определяется этой фразой:
Цитата Сообщение от лыс Посмотреть сообщение
Размер входного потока не превышает 256 КБ.
Мне хватило double mas[132000].
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
09.11.2012, 17:33  [ТС]     Обратный корень #3
Но всё равно, какой код на С++?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.11.2012, 06:02     Обратный корень #4
Цитата Сообщение от лыс Посмотреть сообщение
Но всё равно, какой код на С++?
Покажите лучше Ваш код. Помогу доделать.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.11.2012, 10:37     Обратный корень #5
лыс, откуда задача?
valeriikozlov, а как вы обеспечили отсутствие потери точности?
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
10.11.2012, 11:13     Обратный корень #6
У тебя в задаче квадратный корень надо вывести, а не обратный квадратный корень.
Для обратного корня есть алгоритм используемый в графике.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.11.2012, 11:26     Обратный корень #7
Цитата Сообщение от iama Посмотреть сообщение
valeriikozlov, а как вы обеспечили отсутствие потери точности?
использовал sqrt(), этого хватило
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.11.2012, 11:45     Обратный корень #8
valeriikozlov, вообще-то 64-битное число нельзя даже поместить в double без потерь точности.
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
10.11.2012, 11:46  [ТС]     Обратный корень #9
Ссылка на задачу: http://acm.timus.ru/problem.aspx?space=1&num=1001

Я никак не могу понять, какого размера создавать массив, и когда программа должна закончить ввод и запоминание в массив чисел. В этом-то и сложность задачи.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.11.2012, 07:40     Обратный корень #10
Цитата Сообщение от лыс Посмотреть сообщение
Я никак не могу понять, какого размера создавать массив, и когда программа должна закончить ввод и запоминание в массив чисел. В этом-то и сложность задачи.
Подходящий размер массива написан выше в этой теме.
Программа должна закончить ввод, когда кончится входной поток. Там же на acm.timus.ru есть раздел, как это делать:
http://acm.timus.ru/help.aspx?topic=cpp
пункт "Ввод/вывод"
Запоминать числа необязательно. Сразу вычисляете квадратный корень и записываете его в массив, о котором писал в этой теме.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
11.11.2012, 12:28     Обратный корень #11
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
#include <iostream>
#include <iomanip>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
 
using namespace std;
 
int main()
{
    double n;
    stack <double> s;
 
    while (cin >> n)
        s.push(sqrt(n));
 
    while (!s.empty())
    {
        cout << fixed << setprecision(6) << s.top() << endl;
        s.pop();
    }
 
    return 0;
}
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
11.11.2012, 15:09  [ТС]     Обратный корень #12
Спасибо всем большое. Очень помогли!
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.11.2012, 17:17     Обратный корень #13
Цитата Сообщение от iama Посмотреть сообщение
вообще-то 64-битное число нельзя даже поместить в double без потерь точности.
в самой первой разминочной задаче для ознакомления с системой не стоит так заморачиваться, ведь для того она и разминочная.
Bryan Castle
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 51
04.01.2017, 00:48     Обратный корень #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
 
    vector<double> A;
    double N;
    while (cin >> N)
    {
        A.push_back(N);
    }
    cout.precision(4);
    for (int i = A.size(); i--;)
    {
        cout << fixed << sqrt(A[i]) << endl;
    }
 
    return 0;
}
Я так решил задачу. Добавляю элементы в вектор и уже обратно вывожу элементы в корне
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3857 / 1615 / 188
Регистрация: 20.02.2013
Сообщений: 4,644
Записей в блоге: 21
04.01.2017, 01:33     Обратный корень #15
Bryan Castle, не скомпилируется. Заголовочные файлы забыли.
Bryan Castle
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 51
04.01.2017, 11:39     Обратный корень #16
ну все библиотеки считываются с <bits/stdc++.h> .
Ну если компилятор не может,то держите все используемые библиотеки
#include <iostream>
#include <cmath>
#include <vector>
zer0mail
2309 / 1935 / 192
Регистрация: 03.07.2012
Сообщений: 6,938
Записей в блоге: 1
04.01.2017, 11:52     Обратный корень #17
А ничего, что тема была создана более 4 лет назад?
GbaLog-
Не Эксперт C++
2055 / 855 / 226
Регистрация: 24.08.2014
Сообщений: 3,251
Записей в блоге: 1
Завершенные тесты: 2
04.01.2017, 11:58     Обратный корень #18
Цитата Сообщение от gru74ik Посмотреть сообщение
Заголовочные файлы забыли.
А вот содержимое <bits/stdc++.h>
Цитата Сообщение от bits/stdc++.h
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
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// C++ includes used for precompiling -*- C++ -*-
 
// Copyright (C) 2003-2016 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
 
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
 
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.
 
/** @file stdc++.h
 *  This is an implementation file for a precompiled header.
 */
 
// 17.4.1.2 Headers
 
// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
 
#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cuchar>
#include <cwchar>
#include <cwctype>
#endif
 
// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
 
#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <codecvt>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif
 
#if __cplusplus >= 201402L
#include <shared_mutex>
#endif
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3857 / 1615 / 188
Регистрация: 20.02.2013
Сообщений: 4,644
Записей в блоге: 21
04.01.2017, 12:07     Обратный корень #19
Цитата Сообщение от GbaLog- Посмотреть сообщение
А вот содержимое <bits/stdc++.h>
Да, это я глупость сказал, признаю. "Смейтесь дети, смейтесь. Коршун, приятного аппетита!" (с)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2017, 13:02     Обратный корень
Еще ссылки по теме:

Обратный связный список C++
Обратный корень C++
Обратный порядок С++ C++
Обратный код C++
C++ Обратный порядок

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

Или воспользуйтесь поиском по форуму:
Fixer_84
480 / 327 / 156
Регистрация: 30.04.2016
Сообщений: 731
04.01.2017, 13:02     Обратный корень #20
Эту задачу уже решал и выкладывал...
Yandex
Объявления
04.01.2017, 13:02     Обратный корень
Ответ Создать тему
Опции темы

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