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

Ответы 3

  • Алгоритм не правильно отработает только при значении n=18446744073709551615 , то есть на клетке 64
  • Исправил, работает правильно
  • //----------------------------------------------------------//   Разработал 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 << '';else  cout << 'Сумма зёрен не превысит 18446744073709551615  ' << i << '';//-----------------------------------------------------------
    • Автор:

      mitchell
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years