Ceci est une question d'entrevue que j'ai rencontrée: trouvez k code> premier chiffres de la représentation décimale de 1/1 code>. On dirait que nous n'avons besoin que de calculer 10 ^ k / n code> pour résoudre le problème. Est-ce que ça fait du sens ? On dirait que je manque quelque chose parce que la solution est trop facile. P>
3 Réponses :
Si ce sont les premiers chiffres K, n'est-ce pas très simple de multiplier le numérateur de 10 ^ k et il devient donc plus facile de diviser par N? Et si nous avons besoin de la réponse, la représentation décimale qui est que nous finirons alors de diviser le résultat de 10 ^ k à nouveau de sorte que la multiplication précédente annule. P>
@ user470379, OP avait un peu de confusion dans sa question. S'il en ait juste besoin de premiers chiffres K, il est très simple à la suite de la commodité.
Calculer 10 ^ k / N peut être extrêmement coûteux avec les grands K et les petits n. p>
Ceci est probablement plus proche d'une bonne solution: Division longue . C'est ainsi que nous avions l'habitude de diviser les nombres avant les calculatrices. :) p>
Évidemment, vous ne devez effectuer que cet algorithme jusqu'à ce qu'il donne des chiffres k. P>
Il suffit d'implémenter une division longue de niveau scolaire: la succursale sur ici, Notez que en modifiant valeur == 0 code> est de détecter quand 1/1 code> a une représentation de terminaison de moins de k code> chiffres. p> n code> est le dénominateur dans 1/1 code> et < Code> k code> est le nombre de chiffres à imprimer dans la représentation décimale de 1 / n code>. p> valeur * = 10 Code> à valeur * = b code> Vous pouvez imprimer la représentation B-ary de 1/1 code> aussi. p> p>
cela ne fonctionnerait pas parce que 1/8 == .125. Si k == 2 puis 10 ^ 2/8 = 12,5, ce qui n'aide pas. La réponse que vous voudriez avoir 25 ans, n'est-ce pas? Peut-être que je vois ce faux?
Les 3 derniers? ou les 3 premiers? ... J'espère que vous savez qu'il y a des chiffres avec la représentation qui ont des chiffres infinis ... 1/3, 1/9
Pardon. Je voulais dire k premiers i> chiffres. Je corrige la question.
@Ani oui je sais que; Mon point était que la solution proposée n'a pas vraiment raison.
Michael - Si cela concerne les premiers chiffres K, alors n'est-il pas simple pour le souci de division plus facile de multiplier le numérateur de 10 ^ k et de prendre les chiffres? Ce qui finira par faire pour la réponse est diviser par 10 ^ k à nouveau pour que la multiplication précédente annule.
@Pointy: Peu importe tout compte; L'OP a changé la question. :)
Pour l'exhaustivité, j'ajouterais un plancher
() code>.Suggestion pour quelqu'un qui écrit une réponse: Google.com/search?q =% 22Reciprocal + Estimation% 22 + algorithme