6 svar
44 visningar
dajamanté är nöjd med hjälpen!
dajamanté 5228
Postad: 7 feb 2019

Antal siffror när man konverterar till en annan bas

God morgon!

Jag gjorde en basbyte och sparade talen i en array för vidare manipulation.

int[] figures = new int[(int) Math.ceil(Math.log(number) / Math.log(base))];

 

Problemet att trots att det passerar testfall, det krånglar till senare med ytterligare tests. Det kan lösas med en arraylist, men varför fungerar inte primitivarrayen?

Laguna 4372
Postad: 7 feb 2019

Har du provat t.ex. alla tal från 2 till 12 i bas 10?

dajamanté 5228
Postad: 7 feb 2019

Ja, bas 10 funkar.

Men nu som du säger det kanske Math.ceil(Math.log(1) / Math.log(10)) avrundar till 0 istället för 1.

Laguna 4372
Postad: 7 feb 2019

Mm. Och vad händer med 10? Det är potenser av basen som är problemet. 

dajamanté 5228
Postad: 7 feb 2019 Redigerad: 7 feb 2019

Nej 10 är fine. Jag bara behöver en plats för att 10 bas 10 är 1 och det är denna tal som jag ska upphöja i kvadrat (enligt problem)

Jag lägg till +1 i slutet och nu funkar det.

Trots för långsamt.

Tack Laguna!

Laguna 4372
Postad: 7 feb 2019
dajamanté skrev:

Nej 10 är fine. Jag bara behöver en plats för att 10 bas 10 är 1 och det är denna tal som jag ska upphöja i kvadrat (enligt problem)

Jag lägg till +1 i slutet och nu funkar det.

Trots för långsamt.

Tack Laguna!

10 i bas 10 är 10.

Men hursomhelst, som du gör kan man lösa problemet om man inte behöver veta exakt hur många siffror det är. Man kan ofta lösa problem så utan att ens försöka ta reda på vad som var fel, men det är en dålig vana.

dajamanté 5228
Postad: 7 feb 2019

Ja, sorry, jag var trött. Hur som helst, för att representera 10 i bas 10 behöver jag ett tal i min array. Det var det jag menade. Men däremot för att representera 1 i bas 10 avrundade min funktion till noll tal.

Jag har förstått felet, tack för hjälpen.

Svara Avbryt
Close