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

question-closed Zadanie z OIJ nie przechodzi jeden z testów wstępnych

Object Storage Arubacloud
0 głosów
214 wizyt
pytanie zadane 22 grudnia 2022 w C i C++ przez polandonion Mądrala (7,040 p.)
zamknięte 23 grudnia 2022 przez polandonion

Siema, aktualnie przerabiam zadanka z OIJ i OIG. Dziś zabrałem się za zadanie Posiadłość. Zrobiłem je na 100%, ale nie przechodzi jeden z testów wstępnych:

0f wiersz 1: wczytano '161', a oczekiwano '162'

Wie ktoś co mogło pójść nie tak?

https://ideone.com/rOw4em

komentarz zamknięcia: odpowiedzią powinno byc max z obliczonej sumy oraz z sumy cyfr liczby b
komentarz 23 grudnia 2022 przez Oscar Nałogowiec (29,320 p.)
Zadanie polega na znalezieniu maksymalnej sumy cyfr dla liczb w przedziale A-B. Starasz się od razu podać wynik, bez żmudnego szukania rozwiązania. Czyli masz jakiś sposób jak od razu wyznaczyć taką liczbę. Są więc dwa możliwe miejsca błędów - sam sposób i jego realizacja. Dobrze by było byś opisał ten sposób bo nie jest on oczywisty i nie bardzo wynika z twojego kodu. A jak ktoś poda przedział 11-111?

Działasz na stringach - ok, w zadaniu podana jest możliwość operowania na wartościach, które mogą się nie zmieścić na typowych typach, także sumę cyfr  łatwiej obliczyć z wartości od razu zapisanej cyframi.

Niestey np. ja patrząc na twój kod widzę, tylko że najpierw wyrównujesz długość oby liczba poprzez dodanie początkowych zer, co jest OK, nie zmienia wartości ani sumy cyfr.

Ale później już nie bardzo rozumien ten kod. 161 czy .2 to duża wartość jak na sumę cyfr, potrzeba co najmniej kilkunastu dziewiątek, a trudno takie długie liczby analizować tak w głowie.

Najlepiej wyjaśnij na czym polegał twój pomysł wyznaczenia wyniku (lub na próbe dodatkowo wypisuj te cyfry, z których ma być utworzony wynik - dzięki temu będzie łatwo sprawdzić czy to faktycznie taka liczba).
komentarz 23 grudnia 2022 przez polandonion Mądrala (7,040 p.)

ten sposob polega na tym ze sprawdzam cyfry obu liczb i jeśli napotkam na dwie różne to od większej odejmuje 1 i reszte uzupełniam dziewiątkami. Przykład:

1) 11 oraz 111:

  • wyrównuję długości obu stringów i po korekcie a = "011" i b = "111"
  • w pętli sprawdzam po kolei cyfry i podczas pierwszego sprawdzania napotykam na niezgodność cyfr, co sprawia, że do tej pory uzyskaną sumę zwiększam o max z tych cyfr - 1, czyli max(0, 1) - 1 = 1 - 1 = 0. Resztę uzupełniam dziewiątkami, ale zamiast iść do końca to z miejsca obliczam ile dziewiątek należy uzupełnić i tak otrzymana liczba to 099, a suma tej liczby to 18.

2) 1000022310000 oraz 1000028310000:

  • długości obu tekstów są te same więc nie ma potrzeby uzupełniania zerami.
  • idę w pętli i za 7. razem mam niezgodność (2 oraz 8). do juz istniejacaj sumy dodaje max(8, 2) - 1 = 7 i uzupełniam dziewiątkami. Tak otrzymana liczba to: 1000027999999
komentarz 23 grudnia 2022 przez polandonion Mądrala (7,040 p.)
wiem dla ktorego testu program mi nie dziala:

1 999999999999999999 <- 18 dziewiątek, 18  * 9 = 162

Podobne pytania

0 głosów
2 odpowiedzi 256 wizyt
pytanie zadane 14 stycznia 2023 w C i C++ przez polandonion Mądrala (7,040 p.)
0 głosów
1 odpowiedź 240 wizyt
pytanie zadane 10 stycznia 2023 w C i C++ przez polandonion Mądrala (7,040 p.)
0 głosów
1 odpowiedź 190 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...