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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
лыс
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
04.11.2012, 20:40     Обратный корень #1
Пожалуйста, помогите решить задачу, не получается уже месяц (если решать с массивами, то нужно создавать по условию задачи массив размером от 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 20:40     Обратный корень
Посмотрите здесь:

Обратный порядок C++
Обратный порядок.. C++
обратный enum C++
Обратный обход C++
Обратный связный список C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 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
4660 / 2486 / 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
4660 / 2486 / 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
4660 / 2486 / 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
Спасибо всем большое. Очень помогли!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 17:17     Обратный корень
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.11.2012, 17:17     Обратный корень #13
Цитата Сообщение от iama Посмотреть сообщение
вообще-то 64-битное число нельзя даже поместить в double без потерь точности.
в самой первой разминочной задаче для ознакомления с системой не стоит так заморачиваться, ведь для того она и разминочная.
Yandex
Объявления
11.11.2012, 17:17     Обратный корень
Ответ Создать тему
Опции темы

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