Temel dönüşüm için birkaç zorluk yaşadık, ancak hepsi tamsayı değerlere uygulanıyor gibi görünüyor. Gerçek sayılarla yapalım!
Meydan okuma
girişler:
- Temel 10'da ifade edilen gerçek bir pozitif sayı x . Bu, çift kesinlikli bir kayan nokta veya bir dize olarak alınabilir. Hassasiyet sorunlarını önlemek için, sayının 10 −6'dan büyük ve 10 15'ten az olduğu varsayılabilir .
- Bir hedef baz b . Bu 2 ile 36 arasında bir tam sayı olacaktır.
- Bir kesir basamak sayısı n . Bu 1 ile 20 arasında bir tam sayı olacaktır.
Çıkış: temsili bir x üssü b ile n fraksiyonel basamağı.
Çıkış ifade işlem olduğunda, ötesinde basamak N th gereken kesik (yuvarlak) içerir. Örneğin, x = 3.141592653589793
temel olarak b = 3
bir 10.0102110122...
çok için n = 3
çıkış olacaktır 10.010
(kesme) değil, 10.011
(yuvarlama).
İçin x ve b fraksiyonel kısmen basamak sonlu sayıda üretmek eşdeğer sonsuz gösterimi (kesiliyor N basamak) kullanmak da mümkündür. Örneğin, 4.5
ondalık olarak da temsil edilebilir 4.49999...
.
Kayan nokta hataları hakkında endişelenmeyin .
Giriş ve çıkış formatı
x baştaki sıfır olmadan verilecektir. Eğer x bir tamsayı olur bunu bir sıfır ondalık kısmı (ile verilecektir varsayabiliriz 3.0
) veya ondalık kısmı olmadan ( 3
).
Çıktı esnektir. Örneğin, şunlar olabilir:
- Tamsayı ve kesirli parçalar arasında uygun bir ayırıcıyla (ondalık nokta) sayıyı temsil eden bir dize. Rakamlar
11
,12
vb (için b 10 öteye) harfleri olarak temsil edilebilirA
,B
her zamanki gibi, ya da başka farklı karakterler olarak (lütfen belirtin). - Tamsayı kısmı için bir dize ve kesirli kısım için başka bir dize.
- Numara içeren iki diziler / listeleri, her bir parça için bir tane
0
için35
basamak olarak.
Tek sınırlama, tamsayı ve kesirli kısımların birbirinden ayrılabilmesi (uygun ayırıcı) ve aynı formatın kullanılmasıdır (örneğin, [5, 11]
tamsayı kısmını ['5', 'B']
temsil eden liste ve kesirli kısmı temsil eden liste için hayır ).
Ek kurallar
- Programlara veya işlevlere herhangi bir programlama dilinde izin verilir . Standart boşluklar yasaktır.
- Bayt cinsinden en kısa kod kazanır.
Test senaryoları
Çıktı basamaklı bir dize olarak gösterilir 0
, ..., 9
, A
, ..., Z
, kullanarak .
ondalık ayırıcı olarak.
x, b, n -> output(s)
4.5, 10, 5 -> 4.50000 or 4.49999
42, 13, 1 -> 33.0 or 32.C
3.141592653589793, 3, 8 -> 10.01021101
3.141592653589793, 5, 10 -> 3.0323221430
1.234, 16, 12 -> 1.3BE76C8B4395
10.5, 2, 8 -> 1010.10000000 or 1010.01111111
10.5, 3, 8 -> 101.11111111
6.5817645, 20, 10 -> 6.BCE2680000 or 6.BCE267JJJJ
0.367879441171442, 25, 10 -> 0.94N2MGH7G8
12944892982609, 29, 9 -> PPCGROCKS.000000000
42, 13, 1
biz olabilir 33
yerine 33.0
?
n
ondalık basamağa sahip olması gerektiğidir