Odejmowanie zamiast dodawania

Suma liczb od 1 do 100 (1+2+3+…+100) wynosi 5050. Gdybyśmy chcieli zastąpić niektóre znaki dodawania znakami odejmowania to czy byłoby możliwe otrzymanie wyniku 2345? Jeśli tak, to ile minimalnie plusów trzeba zastąpić minusami by ten wynik osiągnąć?

  • Niestety, nie da się osiągnąć tego wyniku. A potrafisz podać regułę, która powie nam jakie liczby da się osiągnąć? Jest ona dość prosta, wystarczy przyjrzeć się wynikom które osiągamy przy zamianie plusów na minusy.

12 komentarzy

    • Pedro

      #include
      #include
      #include

      /* run this program using the console pauser or add your own getch, system(„pause”) or input loop */

      using namespace std;

      int wynik,liczba,znak;

      int main() {
      srand( time( NULL ) );
      wynik = 0;
      liczba = 0;
      while (wynik !=2345){
      while (liczba < 100){
      znak = rand() % 2;
      liczba +=1;
      if (znak == 0){wynik += liczba;}
      if (znak == 1){wynik -= liczba;}
      if (liczba == 100){cout << wynik<<endl;liczba = 0;wynik = 0;}
      }
      }
      cout <<wynik;
      return 0;
      }

      Powodzenia w szukaniu :D

  1. łukasz

    Przykład:
    70 + 71 + … + 100 = 2635
    5050 – 2635 = 2415
    2415 – 2345 = 70
    70 można z pozostałych liczb < 70 uzyskać na wiele sposobów.

  2. łukasz

    Przykład:
    Można zauważyć że liczby 1…100 można „ustawić w pary” tak, że suma pary równa jest 101.
    Weźmy 24 takie pary 1+100…24+77. Suma pozostałych 26 par równa jest 0 przy założeniu, że 13 z nich jest z minusem.
    24 * 101 = 2424.
    2424 – 2345 = 79.
    79 – 77 – 2 (które są w wybranych przez nas parach) = 0.

    • SzaloneLiczby
      Admin

      Popełniasz jeden mały, ale istotny błąd, ale zaraz Ci go nakreślę :)
      Załóżmy, że minus jest tylko przed liczbą 2. Wtedy wynik działania to 5046 (a nie 5048).
      Jeśli minus będzie tylko przed liczbą 3, to wynik działania wyniesie 5044.
      Jeśli minus byłby przed 2 i 3, to wynik wyniósłby 5040.

      Myślę, że już teraz wiesz dlaczego nigdy nie wyjdzie 2345 ;)

  3. łukasz

    Fakt.
    Wynik jest parzysty. Obojętnie czy odejmuję parzystą czy nieparzystą to i tak nadal suma jest parzysta.
    A przed jedynką też można postawić ‚minus? ;)

    • SzaloneLiczby
      Admin

      Gdyby się dało postawić minus przed jedynką, to wtedy miałbyś rację, ale niestety minusami możemy zastąpić tylko plusy, więc się nie da ;)

        • SzaloneLiczby
          Admin

          Ach tak, masz rację – teraz sam popełniłem dokładnie ten sam błąd ;) Nawet jak damy minus przed 1 to i tak nie osiągnie się tego wyniku, dzięki za poprawienie :)

Dodaj komentarz

Twój adres email nie zostanie opublikowany.