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

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

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

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

04.11.2012, 20:40. Просмотров 2852. Ответов 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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обратный корень (C++):

Обратный корень - C++
Исходные данные Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018), отделённых друг от друга произвольным количеством пробелов и...

Обратный код - C++
Помогите написать программу, вычисляющую обратный код десятичного числа Например ввод:7890 вывод: 2109 буду очень...

Обратный порядок - C++
Помогите пожалуйста написать программу, которая печатает текст в обратном порядке. Текст заканчивается точкой. Зарание спасибо!

Обратный порядок.. - C++
Я в си новичок. Помогите с задачкой, пожалуйста! Дано предложение. Напечатать его в обратном порядке слов, например, предложение "мама...

Обратный порядок - C++
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами,...

Обратный порядок С++ - C++
Добрый вечер. Есть прога, но не могу разобраться в ней, можете поставить комментарии? И как реализовать этот же код программы, но что бы...

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

Я никак не могу понять, какого размера создавать массив, и когда программа должна закончить ввод и запоминание в массив чисел. В этом-то и сложность задачи.
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.11.2012, 07:40 #10
Цитата Сообщение от лыс Посмотреть сообщение
Я никак не могу понять, какого размера создавать массив, и когда программа должна закончить ввод и запоминание в массив чисел. В этом-то и сложность задачи.
Подходящий размер массива написан выше в этой теме.
Программа должна закончить ввод, когда кончится входной поток. Там же на acm.timus.ru есть раздел, как это делать:
http://acm.timus.ru/help.aspx?topic=cpp
пункт "Ввод/вывод"
Запоминать числа необязательно. Сразу вычисляете квадратный корень и записываете его в массив, о котором писал в этой теме.
1
iama
1250 / 975 / 49
Регистрация: 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 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 50
11.11.2012, 15:09  [ТС] #12
Спасибо всем большое. Очень помогли!
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
11.11.2012, 17:17 #13
Цитата Сообщение от iama Посмотреть сообщение
вообще-то 64-битное число нельзя даже поместить в double без потерь точности.
в самой первой разминочной задаче для ознакомления с системой не стоит так заморачиваться, ведь для того она и разминочная.
0
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;
}
Я так решил задачу. Добавляю элементы в вектор и уже обратно вывожу элементы в корне
0
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
04.01.2017, 01:33 #15
Bryan Castle, не скомпилируется. Заголовочные файлы забыли.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2017, 01:33
Привет! Вот еще темы с ответами:

Обратный обход - C++
У меня есть реализация дерева и его прямой и симметричный обход. Как можно реализовать обратный обход? #include &quot;stdafx.h&quot; #include...

обратный enum - C++
привет есть enum color {q,w,r,t,w,e,y,q}; как вернуть название (q,w,..) по номеру типа color c; cout&lt;&lt;c(3) //вывод &quot;r&quot;...

Обратный цикл for - C++
Хочу написать код, который бы выводил заданную последовательность в обратном порядке. Мой код ее выводит, но перед выводом пишет цифры,...

Обратный связный список - C++
Всем привет! Я уже голову сломал, но никак не могу создать связный список, который помещает новый элемент не в конец списка, а в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.01.2017, 01:33
Ответ Создать тему
Опции темы

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