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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
#1

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

12.05.2011, 10:01. Просмотров 1776. Ответов 34
Метки нет (Все метки)

НАРОД ПОМОГИТЕ ПЛЗ! ПОДСКАЖИТЕ КАК ВЫВЕСТИ ОЧ БОЛЬШОЕ ЧИСЛО В ЭТОЙ ЗАДАЧЕ НАПРИМЕР ЕСЛИ ВЗЯТЬ 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2011, 10:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Индийская легенда (C++):

Легенда на графике - C#
Как создать легенду под графиком расчета биоритмов? Зеленый- физическое состояние, красный- эмоциональное, синий- интеллектуальное.

Легенда о шахматах - MS Excel
Согласно древней легенде, создатель игры «шахматы» согласился продать их за зерно, количество которого нужно считать с помощью шахматной...

Легенда к 3D-графику в MathCAD - MathCAD
Добрый день, добрый день, возможно в маткаде для цветного 3 д графика представить цветную легенду, и как? Добрый день, подскажите как к 3...

Динамическая легенда в цикле - Matlab
Здравствуйте! Первый мой вопрос на этом форуме, не кусайте больно. Есть цикл(ниже приведу код), в котором на каждом ходе цикла...

Легенда про try catch - C#
Правда ли, что при использовании try catch, код выполняется дважды (1ый раз типа создает новый "фоновый" поток и там делает все команды...

Легенда о Иосифе Флавии - Turbo Pascal
Существует легенда, что Иосиф Флавий - известный историк первого века - выжил и стал известным благодаря математической одаренности. В ходе...

34
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
12.05.2011, 10:34 #2
использовать не int, а long double
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 10:44 #3
Здесь длинная арифметика видимо, 2^N
0
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 10:52  [ТС] #4
LineStown не работает даже если заменить на long double вот сам поробуй будет ли выводить число если ввести 10 ячейку!?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 11:58 #5
Это же очень простая задача...
Хотя довольно интересная=)
Максимальное значение unsigned long long 18446744073709551615, при 64 ячейке вроде такой же результат получится.
а 10 ячейка - это всего-лишь 2055.
0
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:02 #6
Цитата Сообщение от pashokman Посмотреть сообщение
на первую клетку шахматной доски 1 зерно, на вторую - 2, на третью - 4, на четвертую - 16 и т.д.
не, на четвертую надо 8, на пятую 16 ... такая легенда

Добавлено через 1 минуту
Цитата Сообщение от pashokman Посмотреть сообщение
return func(n-1)*func(n-1);
поэтому это надо заменить на
C++
1
return 2*func(n-1);
хотя, если речь о какой-то особой легенде, то действительно числа будут расти очень быстро)))

Добавлено через 28 секунд
Цитата Сообщение от diagon Посмотреть сообщение
10 ячейка - это всего-лишь 2055
512)
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:05 #7
Разве? Там же вроде сумму всех ячеек найти надо, а это (2^N+1)-1
А, пардон, тогда это очень простая задача.
2^63= 18446744073709551615
signed long long 9223372036854775807
Так что в unsigned int64
1
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
12.05.2011, 12:05 #8
Максимальное число будет 2^63, так как всего 64 клетки у шахматной доски, но сказано что в первой клетке 1 мешок зерна, следовательно из этих соображений финальное число будет равно 2^63. Такое число можно записать в int64. int64 может сожержать число до диапозона 2*10^64.
2
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:08 #9
Цитата Сообщение от diagon Посмотреть сообщение
Разве? Там же вроде сумму всех ячеек найти надо, а это (2^N+1)-1
Цитата Сообщение от pashokman Посмотреть сообщение
Опишите программу, содержащую рекурсивную процедуру вычисления количества зерен на n-й ячейке шахматной доски.
...........
0
vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
12.05.2011, 12:08 #10
Цитата Сообщение от diagon Посмотреть сообщение
Максимальное значение unsigned long long 18446744073709551615, при 64 ячейке вроде такой же результат получится
2^64=18446744073709551616, так что unsigned long long не хватит =)
1
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:10 #11
Цитата Сообщение от diagon Посмотреть сообщение
Максимальное значение unsigned long long 18446744073709551615, при 64 ячейке вроде такой же результат получится.
нет, только 2^63 поэтому войдет
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:11 #12
Цитата Сообщение от vet Посмотреть сообщение
2^64=18446744073709551616, так что unsigned long long не хватит =)
64ую можно строчкой вывести, но вообще она всего на 1 больше максимального значения unsigned 64=)
0
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:11  [ТС] #13
я вот про это и спрашиваю там получается надо суму найти! и получится очень большое число я уже перепробывал много типов и ничего не подходит
0
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:12 #14
Цитата Сообщение от pashokman Посмотреть сообщение
там получается надо суму найти!
Цитата Сообщение от pashokman Посмотреть сообщение
Опишите программу, содержащую рекурсивную процедуру вычисления количества зерен на n-й ячейке шахматной доски.
Так сумму надо, или только количество зерен на n-ой ячейке???
Если сумму, то 2^n-1 где n-номер ячейки, для 64 это 2^64-1, влезет в unsigned long long)
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:13 #15
Цитата Сообщение от pashokman Посмотреть сообщение
я вот про это и спрашиваю там получается надо суму найти! и получится очень большое число я уже перепробывал много типов и ничего не подходит
Если сумму всех ячеек находить, то 64 выводится строкой, а 63 равна максимальному значению unsigned long long
0
12.05.2011, 12:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2011, 12:13
Привет! Вот еще темы с ответами:

Легенда для карты - C++ Qt
Здравствуйте все. Такая проблема: у меня есть карта скважин, которая рисуется на сцене и отображается в GraphicsView. Нужно сделать легенду...

Компонента MSChart: Легенда - Visual Basic
По умолчанию там С1, С2, ... А как это поменять на свои названия?

DBChart. Легенда графика - C++ Builder БД
не могу найти, как в DBChart заполнить легенду. очень нужна помощь. и информации по Chart'у мало как-то

Chart - дублируется легенда диаграммы - C#
Доброго времени суток. Столкнулся с проблемой - при повторном построении диаграммы, дублируется ее легенда. Суть вот в чем: Имеется...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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