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

Индийская легенда - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 10:01     Индийская легенда #1
НАРОД ПОМОГИТЕ ПЛЗ! ПОДСКАЖИТЕ КАК ВЫВЕСТИ ОЧ БОЛЬШОЕ ЧИСЛО В ЭТОЙ ЗАДАЧЕ НАПРИМЕР ЕСЛИ ВЗЯТЬ 10 ячейку?

"О шахматной доске и зернах". Известная индийская легенда утверждает, что когда великий гроссмейстер выиграл у падишаха в награду он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д. Опишите программу, содержащую рекурсивную процедуру вычисления количества зерен на n-й ячейке шахматной доски.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "conio.h"
 
int func(int n)
{
    if (n == 1) return 1;
    if (n == 2) return 2;
 
    return func(n-1)*func(n-1);
}
 
int main()
{
    int N;
    scanf("%d",&N);
    printf("%d",func(N));
    getch();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2011, 10:01     Индийская легенда
Посмотрите здесь:

Turbo Pascal Легенда о Иосифе Флавии
MS Excel Легенда о шахматах
Легенда диаграммы Turbo Pascal
C++ Builder БД DBChart. Легенда графика
Компонента MSChart: Легенда Visual Basic
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:23  [ТС]     Индийская легенда #21
ну я понимаю задачу так что должна получится такая последовательность 1 2 4 16 256...

Добавлено через 1 минуту
и на последней ечейке будет очень большое число так как его вывести строкой формула у меня правильная как написать задачу чтоб выводило большое число строкой?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:23     Индийская легенда #22
Цитата Сообщение от pashokman Посмотреть сообщение
ну я понимаю задачу так что должна получится такая последовательность 1 2 4 16 256...
А я не понимаю, у этой последовательности вообще никакой логики нету...
А вообще это геометрическая прогрессия...
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:25     Индийская легенда #23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdio.h" 
unsigned long long func(int n)
{
    if (n == 1) return 1; 
    return 2*func(n-1);
}
 
int main()
{
    int N;
    scanf("%d",&N);
    printf("%llu",func(N));
    getchar();
    return 0;
}
посл-ть :1,2,4,8,16,32,64,128,256,512,1024,2048...
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:38  [ТС]     Индийская легенда #24
помоему по условию задачи должно быть 2^1 2^2 2^4 2^8! я реально уже не знаю как по другому
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:44     Индийская легенда #25
Одному мне кажется, что 18 миллиардов зерен на 1 ячейку это слишком?
Если так
2^1 2^2 2^4 2^8
То гуглим "длинная арифметика"+"возведение в степень"
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:46     Индийская легенда #26
Цитата Сообщение от pashokman Посмотреть сообщение
помоему по условию задачи должно быть 2^1 2^2 2^4 2^8! я реально уже не знаю как по другому
http://ru.wikipedia.org/wiki/%D0%98%...BC%D0%B0%D1%82

Цитата Сообщение от pashokman Посмотреть сообщение
он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д.
это точное условие задачи?
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:51  [ТС]     Индийская легенда #27
ну у меня такое условие "он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д."
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:55     Индийская легенда #28
Цитата Сообщение от pashokman Посмотреть сообщение
ну у меня такое условие "он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д."
тогда 99% условие некорректно)
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:56  [ТС]     Индийская легенда #29
я опять ошибся там должно бить 2^1 2^2 2^3 2^4 2^5...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.05.2011, 18:39     Индийская легенда #30
Цитата Сообщение от eXXXXXXXXXXX Посмотреть сообщение
тогда 99% условие некорректно)
Скорее всего коректно.

Цитата Сообщение от pashokman Посмотреть сообщение
ну я понимаю задачу так что должна получится такая последовательность 1 2 4 16 256...
Наверное нет.
Предлагаю так:
Изначально есть 1.
Все последующие члены последовательности выводятся так:
2 в степени предыдущего значения. Т. е. имеем:
2^1 = 2
2^2 = 4
2^4 = 16
2^16 = 65536
и т.д.
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 20:01     Индийская легенда #31
valeriikozlov, ну так ведь легенда не такая и автор темы написал, что ошибся)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.05.2011, 21:08     Индийская легенда #32
eXXXXXXXXXXX,
Ну вообще-то автор пишет:
Цитата Сообщение от pashokman Посмотреть сообщение
ну у меня такое условие "он попросил положить на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д."
А его высказывания:
Цитата Сообщение от pashokman Посмотреть сообщение
помоему по условию задачи должно быть 2^1 2^2 2^4 2^8! я реально уже не знаю как по другому
Цитата Сообщение от pashokman Посмотреть сообщение
я опять ошибся там должно бить 2^1 2^2 2^3 2^4 2^5...
это по моему его догадки.
А сама легенда изначально конечно не так звучит. Но ведь любую легенду можно немного изменить, на то она и легенда....
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
13.05.2011, 17:14  [ТС]     Индийская легенда #33
да возможно и так но как сделать чтобі віводило большое число например при вводе числа 12 уже ничего не выводит а должно выводить! если ты знаеш как это сделать то кинь плз всю задачу!)))
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
14.05.2011, 05:36     Индийская легенда #34
Цитата Сообщение от pashokman Посмотреть сообщение
да возможно и так но как сделать чтобі віводило большое число например при вводе числа 12 уже ничего не выводит а должно выводить! если ты знаеш как это сделать то кинь плз всю задачу!)))
Если бы все было так просто, я бы написал код.
Но поверьте мне, что если условие задачи корректно (и для решения этой задачи подходит только способ, который я описал в 30 сообщении этой темы), то даже используя длинную арифметику, задачу решить невозможно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 06:32     Индийская легенда
Еще ссылки по теме:

Легенда для карты C++ Qt
Легенда про try catch C#
Matlab Динамическая легенда в цикле

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

Или воспользуйтесь поиском по форуму:
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 06:32     Индийская легенда #35
Пиши класс-контейнер, хранящий значение в нескольких переменных, и перегружай для него операторы.
Yandex
Объявления
14.05.2011, 06:32     Индийская легенда
Ответ Создать тему
Опции темы

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