Implementeremo la divisione per numeri interi arbitrariamente grandi.
Questo è code-golf .
Il compito è scrivere un programma o una funzione che implementa interi di precisione arbitrari e divisione su di essi.
Si noti che molte cose che potrebbero renderlo molto semplice non sono consentite, assicurarsi di leggere le specifiche .
Ingresso
Ti verranno dati 2 elementi come input:
- una stringa di 10 cifre di base, chiamala
n
. - un'altra stringa di 10 cifre di base, chiamala
m
Supponiamo chen>m>0
significhi che non ti verrà mai chiesto di dividere per zero .
Produzione
Verranno emessi due numeri Q
e R
dove m * Q + R = n e 0 <= R <m
specificazioni
Il tuo invio dovrebbe funzionare per numeri interi arbitrariamente grandi (limitati dalla memoria disponibile).
Non è possibile utilizzare librerie esterne. Se è necessaria una libreria esterna per l'I / O, è possibile trattarla come integrata. (guardando cose come iostream, ecc.).
Se la tua lingua ha un built-in che banalizza questo, non puoi usarlo. Ciò include (ma non può essere limitato a) tipi incorporati in grado di gestire numeri interi di precisione arbitraria.
Se un linguaggio per qualche motivo utilizza numeri interi di precisione arbitraria per impostazione predefinita, questa funzionalità non può essere utilizzata per rappresentare numeri interi che in genere non possono essere memorizzati in un 64 bit.
Ingresso e uscita DEVONO essere nella base 10 . Non importa come si memorizzano i numeri in memoria o come si esegue l'aritmetica su di essi, ma i / o sarà base 10.
Hai 15 secondi per produrre un risultato. Questo per proibire la sottrazione iterata.
L'obiettivo qui è effettivamente implementare interi di precisione arbitrari. Se per qualche motivo sei in grado di aderire alle specifiche della sfida e farlo con successo senza implementarle, beh, credo che per te sembri valido.
Casi test
- In questo caso, gli input sono 39! e 30!
Ingresso
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Produzione
Q = 76899763100160
R = 0
n
è la somma di tutti i fattoriali fino a 50, più 1.m
sono numeri concatenati fino a 20.
ingresso
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
produzione
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
è 205! + 200 !.m
è quante lacrime PeterTaylor mi ha fatto versare facendo a pezzi le cose che inserisco nella sandbox.
Ingresso
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Produzione
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
Probabilmente aggiungerò altri casi di test ad un certo punto.