Решаем задачи Абрамян на C. While12

While12. Дано целое число $$N$$ ($$> 1$$). Вывести наибольшее из целых чисел $$K$$, для которых сумма $$1 + 2 + … + K$$ будет меньше или равна $$N$$, и саму эту сумму.

Решение:

Другие задачи из раздела While можно посмотреть здесь.

Комментарии:

Комментарии 2

  • int k=0, temp=0;
    while (!(temp+k>n)) {
    ++k;
    temp+=k;
    }

    пожно подробно пошагово! что мы здесь сделали!

    • Начну с того что в решении была ошибка… в цикле я брал не следующую k а текущую…
      поэтому поправил с

      на:

      Но всё равно попытаюсь объяснить по шагово:

      В нутри этого цикла происходит следующее:
      1 шаг
      ++k;//k=0+1 так как при объявлении k мы прировняли его к 0. И увеличили на 1.
      temp+=k;//temp=0+1 так как при объявлении temp мы приравняли к 1. А k на предыдущем шаге стал равен 1.

      2 шаг
      ++k; //k=1+1; увеличили k на 1
      temp+=k; // temp =1+2 к temp прибавляем k

      3 шаг
      ++k; //k=2+1; продолжаем увеличивать k на 1
      temp+=k; //temp=3+3 и прибавлять к temp k

      в итоге у нас k будет увеличиваться по правилу:
      1+2+3+4+..
      while (!(temp+k+1>n)) {
      пока temp+ (k+1) не больше n.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *