Написать программу ** языке С++ Задача: В одной старинной задаче мудрец предложил шаху в...

0 голосов
74 просмотров

Написать программу на языке С++
Задача:
В одной старинной задаче мудрец предложил шаху в качестве награды за услугу выдать зерно. Причем количество зерна оговорил так:на первую клетку шахматной доски положить 1 зерно, на 2-ую - 2, на 3-ю - 4, на 4-ую - 8 и т.д. Составить программу, с помощью которой можно вычислить, на какой клетке суммарное количество зерен превысит N штук.


Информатика (12 баллов) | 74 просмотров
0

В какой школе учат С?

0

Колледж СПО, 3 курс) Многие школьники изучают С++ на досуге)) Вдруг кто поможет

Дан 1 ответ
0 голосов

//----------------------------------------------------------
//   Разработал GonanSoft
//----------------------------------------------------
int i; 
unsigned long long k=0; // сумма зёрен на i-ом шаге
unsigned long long s=1; // количество зерен в i-ой клетке 
unsigned long long n; // переменная признак окончания

cout << 'количество зерен ';  <br>cin>>n;
for (i = 1; i <= 64; i++) <br>{
  k=k+s;
  if (n    break;
  s=s<<1;</span> 
}

if (n<>18446744073709551615)  //это проверка на максимум зёрен
  cout << 'Номер клетки = ' << i << '\n';<br>else
  cout << 'Сумма зёрен не превысит 18446744073709551615  ' << i << '\n';<span>
//-----------------------------------------------------------

(424 баллов)
0

Алгоритм не правильно отработает только при значении n=18446744073709551615 , то есть на клетке 64

0

Исправил, работает правильно