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

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

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

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

12.05.2011, 10:01. Просмотров 1738. Ответов 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;
}
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
Существует легенда, что Иосиф Флавий - известный историк первого века - выжил и стал известным благодаря математической одаренности. В ходе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
12.05.2011, 12:14 #16
Если сумму всех ячеек находить, то 64 выводится строкой, а 63 равна максимальному значению unsigned long long
Вот и решение =)
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:15 #17
Цитата Сообщение от diagon Посмотреть сообщение
63 равна максимальному значению unsigned long long
неправда, возьми листочек, ручку и посчитай
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:16  [ТС] #18
ой сори я уже сам запутался там надо вывести количество зерен на n-ячейке!
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
12.05.2011, 12:17 #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include "conio.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("%d",func(N));
        getch();
 
    return 0;
}
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.05.2011, 12:18 #20
С листочком и ручкой долго однако считать придется...)
2^64-1=18446744073709551615
Правда тоже строчкой выводить придется, т.к. сначала получится число, которое больше insigned int 64, и после его декремента получится нужное.
К посту выше-в int не влезет.
Ну на одной ячейке неинтересно=)
P.S.я в си не очень разбираюсь, но спецификатор вывода на %I64 надо заменить если signed, как unsigned не знаю
pashokman
0 / 0 / 0
Регистрация: 16.03.2011
Сообщений: 44
12.05.2011, 12:23  [ТС] #21
ну я понимаю задачу так что должна получится такая последовательность 1 2 4 16 256...

Добавлено через 1 минуту
и на последней ечейке будет очень большое число так как его вывести строкой формула у меня правильная как написать задачу чтоб выводило большое число строкой?
diagon
Higher
1929 / 1195 / 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
1929 / 1195 / 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++
4670 / 2496 / 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
и т.д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2011, 18:39
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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