Combinez deux nombres en un. Exemple: 123 et 456 deviennent 123456
En C++, comment puis-je combiner (remarque: ne pas ajouter) de deux entiers en un grand nombre entier?
Par exemple:
int1 = 123;
int2 = 456;
Est-il une fonction pour prendre les deux nombres et tourner intCombined en 123456?
EDIT:
Mon mauvais pour ne pas expliquer clairement. Si int2 est 0, alors la réponse doit être 123, pas de 1230. En réalité, si int1 (le nombre sur le côté gauche) n'aurait qu'une valeur si int2 va sur la 32 bits limite. Alors, quand int2 est 0, alors int1 est 0 (ou à la poubelle, je ne suis pas sûr).
source d'informationauteur jiake
Vous devez vous connecter pour publier un commentaire.
La puissance de dix, que vous devez multiplier le premier numéro, est le plus petit, qui est plus grand que le deuxième nombre:
Vous pouvez convertir en chaînes, de les combiner, puis de les convertir à un int?
Pour chaque chiffre dans
int2
vous pouvez plusieursint1
par 10, puis ajouterint2
:Vous pourriez se débarrasser de la boucle à l'aide de
log10
etceil
.En supposant que les deux entiers non-négatifs, et int1 va sur la gauche et int2 va sur la droite, vous avez besoin de comprendre comment de nombreux chiffres int2 est, multiplier int1 par 10 un tas de fois, puis les ajouter.
Si les numéros que vous essayez de combiner sont des entiers positifs, vous pouvez utiliser le couplage des Fonctions.
La fonction d'appariement crée un numéro unique à partir de deux. C'est aussi une fonction réversible.
Alors que l'inverse est:
Note. Le ci-dessus n'est pas dans une langue spécifique. Juste quelques calculs...
Vous pouvez utiliser stringstream:
alors appel
atoi
sur la chaîne renvoyée.Ce qui suit est essentiellement sth de la solution retenue, mais avec le b==0 fix, et la boucle remplacé par une expression pour calculer l'échelle directement:
Dans certaines circonstances (comme une cible avec FPU et une bonne mathématiques de la bibliothèque), l'expression pourrait être plus rapide que la boucle, mais je n'ai pas testé cette hypothèse.
Une autre option qui fonctionne pour C trop: