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.

19
Dodaj komentarz

łukasz

da się osiągnąć taką sumę :)

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

vi

#include <iostream
#include <cstdlib
#include <time.h

(dopiszczie "większe niż" pod koniec linijki)
zeżarło ci biblioteki,
poza tym twój program ma szansę na nieskończoną pętlę (warunkiem wyjścia jest suma 2345, która jest liczona w sposób losowy). Punkty bonusowe za wypisanie, gdzie i ile jest minusów.

ł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.

ł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.

ł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? ;)

Geralt

Hehe
Az się ciśnie na usta powiedzonko „mieć 5zloty i nie mieć 5zloty to już 10zloty”
:-)

Nowicjusz

Zawsze można przed liczbami od 68 do 100
I przed liczbą 33 wstawić kinusy to wtedy wykdzie wynik

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.

MateStu

Zagadka podobna do. Masz dwa kubki obrocone do dolu i jeden do gory. Czy dasz rade obrocic wszystkie do gory jezeli jedniczesnie obracasz dwa wybrane na odwrotna ppzycje. Parzysta – parzysta daje parzysta wiec nigdy nie uzyskamy wyniku nieparzystego.

Olivka

Nie da się. Najlepiej sprawdzić to w takie sposób: 5050-2*którakolwiek z liczb od 1 – 100. Dlaczego *2 bo najpierw ją dodaliśmy a przecież trzeba ją jeszcze odjąć. Wynik który chcemy osiągnąć jest liczbą nieparzystą, a każda liczba mnożona przez 2 jest parzysta. Każda parzysta – parzysta = parzysta :)

Kam98

Mi wyszło że trzeba wstawić 31 minusów. W liczbach od 69 do 100 i między 2 i 3.

XIX

Jest to nie możliwe ponieważ zmieniając plus na minus odejmujemy dwukrotność liczby liczby zmienionego znaku od 5050, więc nawet jeśli zmienimy plus na minus przy liczbach nieparzystych i tak finalnie odejmiemy liczbę parzystą od 5050. Aby otrzymać liczbę 2345 musielibyśmy z liczb zmienionych znakiem dostać liczbę 1352,5, a nie dostaniemy takiej liczby z liczb całkowitych.

ultramatematyk32018

prawda. zgodnie z niezmiennikami. bo zmieniając zabieramy liczbę z sumy i jeszcze ją odejmujemy, czyli zabieramy ją dwa razy, czyli zawsze odejmujemy liczbę parzystą, a odejmując od liczby parzystej liczby parzyste nie uzyskamy liczby nieparzystej.