Jak to zrobić (proste)

Jak to zrobić (proste)
K3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Witam potrzebuję pomocy ogólnie jest to część problemu, który rozwiązuję gorsza część już jest za mną lecz nie mogę wpaść na już mozna powiedzieć "wisienke na torcie" na pewnie bardzo prosty sposób a mianowicie mam tablice np.
2 2 2 2 2 2 2 2 3 3 3 3 5 5 7 11 i zależy mi aby wyświetlić to jako: 2^8 * 3^4 * 5^2 * 7^1 * 11^1 chodzi tylko o zapis (2 do potegi 8 razy 3 do potegi 4 etc).
Nie mogą to być wektory ani żadne komendy z innej biblioteki niż iostream, z góry dzięki za pomoc!

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Iteruj sobie i zliczaj powtórzenia.

enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
1

No to skoro masz posortowane liczby, to zrób coś w stylu:

Kopiuj
int ile_pod_rzad = 0;
int poprzednia = -1;
dla każdej liczby {
  jesli obecna jest rózna niż poprzednia, to wypisujemy poprzednia^ile_pod_rzad oraz ustawiamy ile_pod_rzad na 0
  
  dodajemy 1 do ile_pod_rzad
  ustawiamy poprzednia na obecną
}

i jeszcze trzeba się zająć końcem pętli

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
program("faktycznie proste") to
    liczba licznik = 0;
    liczba aktualna_liczba = 0;
    liczba poprzednia_liczba = -1;

    dopoki pobieram >> aktualna_liczba rob
        jezeli aktualna_liczba != poprzednia_liczba to
            jezeli poprzednia_liczba != -1 to
                wypisz << poprzednia_liczba << "^" << licznik << " ";
            wystarczy;

            poprzednia_liczba = aktualna_liczba;
            licznik = 0;
        wystarczy;

        licznik += 1;
    wystarczy;
    wypisz << poprzednia_liczba << "^" << licznik << " ";
wystarczy;

dla 2 2 2 2 2 2 2 2 3 3 3 3 5 5 7 11 zwraca oczekiwane 2^8 3^4 5^2 7^1 11^1
Pamiętaj tylko żeby skopiować makra z linku poniżej, inaczej prowadzący/nauczyciel nie będzie mógł tego odpalić

https://wandbox.org/permlink/CDyDfQm83g2qanY4

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.