Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mały problem matematyczny, x * y * z * q = abc
Saint
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 16.02.2004

Ostrzeżenie: (0%)
-----


Nigdy nie miałem głowy do przedmiotów ścisłych dlatego szukam jakiegoś rozwiązania / małego skryptu, który wygenerował by mi wszystkie możliwości takiego działania:

x * y * z * q = abc (abc jest znane)

np. gdy wynik jest dajmy na to 40 to mamy np. 2 * 4 * 1 * 5 = 40

Ogólnie mówiąc potrzebne mi są cyfry, które przemnożone przez siebie dadzą mi wynik, który znam.

Z góry dziękuję za pomoc.


--------------------
Apple iPhone bilety lotnicze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


Właściwy dział to Gotowe rozwiązania / Szukam. Przenoszę temat.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
nexis
post
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


  1. <?php
  2. echo '<code>';
  3.  
  4. $abc = 40;
  5.  
  6. for ($x = 1; $x <= $abc; $x++) {
  7.   for ($y = 1; $y <= $abc; $y++) {
  8.      for ($z = 1; $z <= $abc; $z++) {
  9.         for ($q = 1; $q <= $abc; $q++) {
  10.            if ($x*$y*$z*$q == $abc) {
  11.               printf("%d * %d * %d * %d = %d<br />" . PHP_EOL, $x, $y, $z, $q, $abc);
  12.            }
  13.         }
  14.      }
  15.   }
  16. }
  17.  
  18. echo '</code>';
  19. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Saint
post
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 16.02.2004

Ostrzeżenie: (0%)
-----


nexis: dziękuję za podpowiedź, ale: albo popełniłęm jakiś błąd albo błąd jest w kodzie więc może wyjaśnie konkretniej o co chodzi.

Jeśli szukam czterech liczb jednocyfrowych, których przemnożenie przez siebie da mi np 40 to mamy najmniej kilka możliwości:
2415
2152
2541
4215 itd.
Chodzi mi o to aby po wpisaniu abc skrypt "wypluł" mi wszystkie takie możliwości.


--------------------
Apple iPhone bilety lotnicze
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


A czym te 4 możliwości się różnią. Składniki sa te same. To tylko permutacja


--------------------
Go to the top of the page
+Quote Post
Saint
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 16.02.2004

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 7.11.2008, 17:32:07 ) *
A czym te 4 możliwości się różnią. Składniki sa te same. To tylko permutacja.

OK. Robimy to tak np. abc = 216 dzielniki jednocyfrowe 216 to: 1, 2, 3, 4, 6, 8, 9 i cały sztuka polega na tym aby odszukać czterocyfrowe wszystkie kombinacje przy minimalnym wysiłku smile.gif.

Dla przykładu 2304:
4889
4898
4988
8849
8489
8498
9488
9848
8894
8948
8984
9884
6886
6868
6688
8686
8668
8866

Ten post edytował Saint 7.11.2008, 16:29:12


--------------------
Apple iPhone bilety lotnicze
Go to the top of the page
+Quote Post
nexis
post
Post #7





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Więc jeśli mają to być tylko liczby jednocyfrowe, to możesz użyć takiego kodu:
  1. <?php
  2. echo '<code>';
  3.  
  4. $abc = 2304;
  5.  
  6. for ($x = 1; $x <= 9; $x++) {
  7.   for ($y = 1; $y <= 9; $y++) {
  8.      for ($z = 1; $z <= 9; $z++) {
  9.         for ($q = 1; $q <= 9; $q++) {
  10.            if ($x*$y*$z*$q == $abc) {
  11.               printf("%d%d%d%d<br />" . PHP_EOL, $x, $y, $z, $q);
  12.            }
  13.         }
  14.      }
  15.   }
  16. }
  17.  
  18. echo '</code>';
  19. ?>

co do następujący wynik:
Kod
4889
4898
4988
6688
6868
6886
8489
8498
8668
8686
8849
8866
8894
8948
8984
9488
9848
9884


Ten post edytował nexis 7.11.2008, 16:39:35


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Saint
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 16.02.2004

Ostrzeżenie: (0%)
-----


nexis: Przepraszam, że zawracam Ci głowę, ale czy mógłbyś pokazać na abc = 216 i napisać szerszy komentarz bo widzę jak to jest zrobione, ale nie do końca rozumiem sad.gif


EDIT:
OK już się połapałem smile.gif Dziekuję.

Ten post edytował Saint 7.11.2008, 17:38:51


--------------------
Apple iPhone bilety lotnicze
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:01