Nous allons implémenter la division pour les entiers arbitrairement grands.
C'est du code-golf .
La tâche consiste à écrire un programme ou une fonction qui implémente des entiers de précision arbitraire et une division sur eux.
Notez que beaucoup de choses qui pourraient rendre cela très facile sont interdites, veuillez vous assurer de lire la spécification .
Contribution
Vous recevrez 2 choses en entrée:
- une chaîne de 10 chiffres de base, appelez-la
n
. - une autre chaîne de base de 10 chiffres, appelez-la
m
Supposons que celan>m>0
signifie que l' on ne vous demandera jamais de diviser par zéro .
Production
Vous allez sortir deux nombres, Q
et R
où m * Q + R = n et 0 <= R <m
Caractéristiques
Votre soumission doit fonctionner pour des entiers arbitrairement grands (limités par la mémoire disponible).
Vous ne pouvez pas utiliser de bibliothèques externes. Si vous avez besoin d'une bibliothèque externe pour les E / S, vous pouvez la traiter comme intégrée. (en regardant des choses comme iostream, etc.).
Si votre langue a une fonction intégrée qui banalise cela, vous ne pouvez pas l' utiliser. Cela inclut (mais sans s'y limiter) les types intégrés qui peuvent gérer des entiers de précision arbitraires.
Si, pour une raison quelconque, un langage utilise des entiers de précision arbitraire par défaut, cette fonctionnalité ne peut pas être utilisée pour représenter des entiers qui ne peuvent généralement pas être stockés sur 64 bits.
L'entrée et la sortie DOIVENT être en base 10 . Peu importe la façon dont vous stockez les nombres en mémoire ou la façon dont vous effectuez l'arithmétique, mais les E / S seront de base 10.
Vous avez 15 secondes pour produire un résultat. Ceci pour interdire la soustraction itérée.
Le but ici est d'implémenter des entiers de précision arbitraires. Si pour une raison quelconque, vous êtes en mesure d'adhérer aux spécifications du défi et de réussir à le faire sans les mettre en œuvre, eh bien je suppose que c'est bon pour vous, cela semble valable.
Cas de test
- Dans ce cas, les entrées sont de 39! et 30!
Contribution
n = 20397882081197443358640281739902897356800000000
m = 265252859812191058636308480000000
Production
Q = 76899763100160
R = 0
n
est la somme de toutes les factorielles jusqu'à 50, plus 1.m
est des nombres concaténés jusqu'à 20.
contribution
n = 31035053229546199656252032972759319953190362094566672920420940313
m = 1234567891011121314151617181920
production
q = 25138393324103249083146424239449429
r = 62459510197626865203087816633
n
est 205! + 200 !.m
est le nombre de larmes que PeterTaylor m'a fait verser en déchirant les choses que je poste dans le bac à sable.
Contribution
n = 271841734957981007420619769446411009306983931324177095509044302452019682761900886307931759877838550251114468516268739270368160832305944024022562873534438165159941045492295721222833276717171713647977188671055774220331117951120982666270758190446133158400369433755555593913760141099290463039666313245735358982466993720002701605636609796997120000000000000000000000000000000000000000000000000
m = 247
Production
q = 1100573825740813795225181252819477770473619155158611722708681386445423816849801159141424129060075102231232666057768175183676764503262931271346408394876267875141461722640873365274628650676808557279259873162169126398101692109801549256156915750794061370041981513180387019893765753438422927286098434193260562682052606153857091520795991080960000000000000000000000000000000000000000000000000
r = 0;
J'ajouterai probablement plus de cas de test à un moment donné.