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.

13 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 :)

  4. Nick

    Nie da się otrzymać tej liczby, ponieważ gdybyśmy zaczęli zamieniać znak minus na plus od najwyższej liczby (aby otrzymać jak najmniejsza liczbę minusów ) to każda kolejna liczba, której znak został zmieniony była by liczba parzysta(gdyż podczas zmieniania plusa na minus nie dosc że obejmujemy liczbę to jeszcze sprawiamy że nie została ona dodana). Biorąc więc pod uwagę fakt że 5050 jest liczba parzysta to wynik także byłby liczba parzysta.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.