pseudokod, programowanie, c++
Jack:
Znana jest liczba naturalna k, która spełnia równanie :
a + b = k ,gdzie a,b ∊ N
znajdź maksymalną wartość a*b, jeżeli a ≠ b.
Przykład:
k = 8
a+b = 8
no to mamy 1+7, 2+6, 3+5
i odpowiednio 1*7=7, 2*6=12, 3*5=15
zatem widzimy, że 15.
Chodzi mi jednak jak napisać algorytm na takie coś...
pseudokod lub coś w tym stylu
27 lip 18:26
jc:
(k2−1)/4 dla nieparzystych k
(k2−4)/4 dla parzystych k
27 lip 18:37
Adamm: b=k−a
mamy a≠b skąd a≠k/2
f(a)=(k−a)*a
to funkcja kwadratowa
mamy wierzchołek dla a=k/2, ale
skoro a≠k/2 to maksimum będzie dla najbliższych wartości k/2, będących liczbami całkowitymi
27 lip 18:56
Jack: Dzięki jc,
Adamm Tobie również.
Jednakże chodzi mi bardziej o to co jc napisał.
−−−> Skąd to ? : D
27 lip 19:26
mat: tak jak napisał Adamm
| k | |
,,najlepiej" by było jakby a= |
| |
| 2 | |
wtedy:
| k | | k | | k2 | |
(k− |
| ) |
| = |
| , więc jeżeli k − parzyste to ok, |
| 2 | | 2 | | 4 | |
co gdy k nieparzyste?
27 lip 19:33
mat: aha, tam jest jeszcze a≠k, więc trzeba wprowadzić poprawke
27 lip 19:33
mat: a≠b*** (pewnie sie sprowadzi do tego co rzeczywiscie napisal jc)
27 lip 19:34
Jack:
| k | |
no ok, czaje, ze najlepiej gdy a = |
| |
| 2 | |
| k | |
ale, ze a≠ |
| to bierzemy sobie wartość o jeden mniejszą |
| 2 | |
(czy większą coś zmieni? − skoro to parabola)
| k | | k | | k | | k | | k2 | | k2−4 | |
f(k) = (k− |
| +1)*( |
| −1) = ( |
| −1)( |
| +1) = ( |
| −1) = |
| |
| 2 | | 2 | | 2 | | 2 | | 4 | | 4 | |
| k | |
weźmy teraz tę wartość o 1 większą −> a= |
| +1 |
| 2 | |
| k | | k | | k | | k | | k2 | | k2−4 | |
f(k) = (k− |
| −1)*( |
| +1) = ( |
| −1)( |
| +1) = ( |
| −1) = |
| |
| 2 | | 2 | | 2 | | 2 | | 4 | | 4 | |
więc na tę postać bym się zgodził.
Ale skąd wiadomo, że to akurat dla parzystych a nie dla wszystkich?
27 lip 19:43
mat: | k | |
bo zeby |
| było naturalne, k musi byc parzyste |
| 2 | |
27 lip 19:47
Jack:
a dobra...
przecież dla k parzystego to "a" jest naturalne zatem możemy odjąć jedynkę i tyle.
Natomiast dla k nieparzystego to "a"... hmm, musimy dodać lub odjąć ułamek, a dokładniej
| k | | 1 | | k | | 1 | | k+1 | | k−1 | | k2−1 | |
f(k) = (k− |
| + |
| )( |
| − |
| ) = ( |
| )( |
| ) = ( |
| ) |
| 2 | | 2 | | 2 | | 2 | | 2 | | 2 | | 4 | |
No i wszystko jasne, jeżeli jest tak jak myślę.
Dziękuję za pomoc <wszystkim> !
27 lip 19:47
Adamm: no nie wiem
a co jeśli dla parzystego k, f(k/2+1) jest większe?
i to samo dla nieparzystego, co jeśli f(k/2+1/2) jest większe
27 lip 20:45
Adamm: a nie, to da to samo, bo funkcja jest symetryczna względem prostej a=k/2
27 lip 20:47
LWG: If k∊{1.2.3....] is fixed and obviously k is given, then for some a,b ∊{1,2,3,...} with a≠b:
the number ab is maximal and a+b=k.
Coś o tym mi wiadomo, ale zapomniałem jak zdefiniowałem liczbę największą. Waszym zadaniem jest
odszukanie moich wniosków na zadajpytanie. Ja mam się męczyć? Od tego mam Was.
27 lip 21:04