В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
danilnikitin624
danilnikitin624
10.07.2021 13:58 •  Информатика

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

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

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

if (n<>18446744073709551615)  //это проверка на максимум зёрен
  cout << 'Номер клетки = ' << i << '\n';
else
  cout << 'Сумма зёрен не превысит 18446744073709551615  ' << i << '\n';
//
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота