• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z zadaniem z olimpiady informatycznej (brak pomysłu)

Aruba Cloud - Virtual Private Server VPS
+1 głos
855 wizyt
pytanie zadane 5 marca 2018 w C i C++ przez marker Nowicjusz (130 p.)
Dzień dobry,

rozwiązuje sobie zadania z roznych olimpiad informatycznych i natknąłem się na zadanie, którego nie potrafię rozwiązać. Męczyłem się nad nim dosyć długo i nic mi nie przychodzi do głowy. Jeśli ktoś miałby jakiś pomysł to będę bardzo wdzięczny. Zadanie podsyłam tutaj: http://www94.zippyshare.com/v/nknBg25W/file.html

Pozdrawiam serdecznie
1
komentarz 5 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)
nie dawaj takich linkow, wklej tresc zadania tutaj, albo na jakis serwis gdzie po kliknieciu mozna je przeczytac a nie sciagac cos
komentarz 5 marca 2018 przez marker Nowicjusz (130 p.)

Wejście i wyjście mi się nie zmieściły, więc wyślę w kolejnej wiadomości

komentarz 5 marca 2018 przez marker Nowicjusz (130 p.)

A oto wejście i wyjście:

1 odpowiedź

0 głosów
odpowiedź 5 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)
Tu jest moim zdaniem błąd w przykładnie, bo jak niby z 21 ma ułożyć? z treści zadania jasno wynika, że liczba użytych patyczków musi być parzysta.

Anyway, zauważ, że dla n>=12 zachodzi zasada, że ilość patyczków= suma kolejnych potęg liczby 2. Dla drugiej śnieżynki jest to 2 do 2+2do3, dla kolejnej dodajesz 2do4, itd itd. Powtarzaj pętlę tak długo, aż n<= licznikowi, a ten powiększaj w pętli o X potęgę liczby 2 inkrementując X co obieg pętli. Jeśli po wykonaniu pętli licznik==n to mamy liczbę odpowiednią do zbudowania śnieżynek z dokładnie n patyczkow. Ilosc rodzajow + X-1.

Moim zdaniem zadanie jest źle ułożone. Z każdej nieparzystej liczby zostaną patyki.
komentarz 6 marca 2018 przez Erfik878 Początkujący (310 p.)
edycja 6 marca 2018 przez Erfik878

w zadaniu jest napisane, że śnieżkę zaczyna układać z dowolnej liczby patyczków (minimum to 2, zatem podstawa może wynosić i 4,8,12 itd.). potem już monotonnie tą podstawę się mnoży przez kolejnę potęge dwójki i dodaje do siebie (x*2^0 + x*2^1 + x*2^2 .... x - podstawa) tak długo, aż ta suma nie jest większa od liczby patyczków, a jeśli w którymś momencie suma jest równa liczbie patyczków, to mamy już właśnie jedną całą śnieżkę. 

mam nawet gotowy kod, który prawidłowo mi rozwiązał to zadanie.

#include<iostream>

using namespace std;

bool SNIEZKA(int maks,int podstawa, int mnoznik)
{
    if (podstawa * 2>maks)
    {
        return false;
    }
    else
    {
        maks -= (podstawa * mnoznik);
        if (maks == 0)
        {
            return true;
        }
        else
        {
            SNIEZKA(maks,podstawa,mnoznik*2);
        }
    }
}
int main ()
{
   int test;
   cin>>test;
   for (int i = 0;i < test;i++)
   {
       int patyczki;
       cin >> patyczki;
       int maks_patyczki = patyczki;
       patyczki/=3;
       int dalej;
       if (maks_patyczki%2==1)
           dalej = 3;
       else
           dalej = 2;

       int wynik = 0;
       for (int j = dalej;j<=patyczki;j+=2)
       {
           bool opcja = SNIEZKA(maks_patyczki,j,1);
           if (opcja == true)
           {
               wynik++;
           }
       }
       cout << wynik <<endl;
   }
}

być może nie koniecznie program się zmieści w limicie pamięci, ale jak pisałem nie zważałem na to. 

komentarz 9 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)
Tak, ale zawsze muszą być to liczby parzyste, natomiast w przykładach na wejsciu jest liczba 21 a na wyjsciu 2, co jest bledem, bo jest w zadaniu zaznaczone, że nie może być niepełna śnieżynka. z 7 ułożysz jedną śnieżynkę (6) i zostanie 1
komentarz 17 marca 2018 przez Erfik878 Początkujący (310 p.)
da się ułożyć dwie pełne różne śnieżki z 21 patyczków. poza tym w zadaniu nie ma napisane że liczba patyczków ma być parzysta

Podobne pytania

0 głosów
0 odpowiedzi 269 wizyt
+1 głos
3 odpowiedzi 1,190 wizyt
0 głosów
0 odpowiedzi 339 wizyt
pytanie zadane 5 października 2016 w C i C++ przez Keretian Nowicjusz (140 p.)

93,335 zapytań

142,330 odpowiedzi

322,415 komentarzy

62,670 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...