1 / 9
May 2017

Czy mógłby ktoś potwierdzić ten test, albo podać poprawny out? In:

3
18446744073709551615
120
153

out:

7LM43P35350835000211
10000
11111
  • created

    May '17
  • last reply

    May '17
  • 8

    replies

  • 760

    views

  • 3

    users

  • 1

    like

Ostatni ok
Przedostatni mój = twój out / 2 [gdy oglądamy/liczymy w układzie 10]

pierwszy:
7LM43P........
7BC43F<---- dalej dobrze --->

Pierwszy faktycznie mój babol, ale drugi twierdzisz, że 120(10) = 5000(!)? Oczywiście, po zamianie na dziesiętny się zgadza, ale moja odpowiedź jest równie dobra jeśli nie lepsza? A 5000(!) to trochę tak jakby napisać AA w systemie dziesiętnym. Chyba, że nie rozumiem kiedy przechodzimy w systemie silniowym do następnego rzędu.

Bardzo możliwe, ale to jednak mój program ma AC, a nie twój? -:wink:

Zła analogia, bo to raczej, [tak mi wychodz] :
pozycja -3210
ilośćCyfr-6543
Czyli na trzeciej pozycji mogą być cyfry od 0 do 5, chociaż raczej nie o to tu chodzi, a o bazy - podstawy mnożenia na poszczególnych pozycjach.

PS
W zasadzie, dostosowałem rozwiązanie do wymagań [testów] autora, chociaż teraz [wtedy też miałem] mam wątpliwości.

Np, odpowiedzi mojego programu:
0 = 0
1 = 1
2 = 2 [a powinno być 10]
3 = 11
4 = 20
5 = 21
6 = 30 [lepiej jak by było 100]
7 = 101
...
24 = 400 [lepiej 1000],

to co napisałem wcześniej, to jednak:
pozycja -3210
ilośćCyfr-5432
itd

PS 2
Widocznie testy są typu randomize i nie ma takich testów. Poprawiłem swój kod i zaliczyłem.
Czyli teraz dla 120, mam odpowiedż [poprawną] 10000, podobnie jak dla moich testów wyżej :wink:

PS 3
Trzeci twój test bez zmian.

Zabawne, że przechodzą różne wersje liczb w systemie silniowym :slight_smile:

Na jakiej podstawie miałbym założyć że z każdym rzędem liczba cyfr zwiększa się o 1? Dla mnie bardziej logiczne jest to aby liczba miała w systemie jeden zapis, a więc:
jeśli 6(10) = 100(!) to już nie 30(!) ani 6(!)
a maksymalne cyfry na kolejnych pozycjach powinny zależeć od wielkości następnej pozycji
czyli
pozycja: 43210
max.cyfr:54321

Pewnie gdzie indziej jest błąd, ale sprawdziłem pierwszych i ostanich kilka milionów cyfr z podanego zakresu i po zamianie z 10 na ! i odwrotnie wszystko się zgadza: -link usunięty-

  • Niemożliwe -- jest tylko jeden dopuszczalny wariant danej liczby w każdym systemie pozycyjnym ( nawet takim który ma zmienną podstawe dla kolejnych pozycji ).
    Jak twój program inaczej generuje konwersje a przechodzi testy to autor zadania powinien dodać więcej testów .
  • 6 ( dziesiętnie ) - nie da się zapisać inaczej jak 100 ( sys silnia )
    30( ! ) jest błędne bo na 2 pozycji mogą być tylko liczby z zakresu 0-2 .
    6( ! ) też jest błędne bo na pierwszej pozycji mogą być liczby z zakresu 0-1 .
  • To jest bez sensu - to tak jak byś postulował żeby w systemie dziesiętnym zabronił pisać np : takie liczby - 34567 .
    Jak najbardzie poprawne jest więc np liczba typu 1ABCD987654321 ( ! )

Dokładnie to miałem na myśli pisząc o maksymalnych cyfrach dla pozycji. Bo skąd te zakresy liczb, które podałeś? Z wielkości silni na następnej pozycji (w lewo), a liczba typu 1ABCD987654321 spełnia założenie, że na ostatnij pozycji ma maks 1 na przedostatniej maks 2 itd.

Problem w tym, że mój program dokładnie tak działa, ale dalej mam WA -link usunięty-

O czym mogłem zapomnieć?

EDIT: Wypisywałem ':' ('0'+10) zamiast 'A' :expressionless:

if (dig > 10) {

^^^^^^^^^^^^^^^^^^^^^^^^^
Tu jest błąd

  • spróbuj liczbe 10*19! albo 20!+10*19!
    3649353012264960000
    1216451004088320000

W takim wypadku, to nie wina autora, trudno wszystko przewidzieć i przygotować wszelkie testy odporne na wszelkie wybryki rozwiązywaczy, a raczej użytkownik, powinien bardziej krytycznie podchodzić do swojego koddu i także lepiej go samodzielnie testować - czyli w tym wypadku, to była tylko moja wina i wprowadziłem małe zamieszanie :wink:

PS
Oczywiście napisałem prośbę i autor obiecał dodać odpowiednie dodatkowe testy.