2010-06-11 6 views
-1

salut j'ai une question à propos d'un problème montrer si le carré du nombre est la somme égale de c'est n chiffre de droite plus n ou n-1 chiffre de gauche? ouJ'ai une question à propos de Kaprekar numéro

let n=297 
n*n=88209 
    and 88+209=n 

ce qui est algorithme pour résoudre ce problème s'il vous plaît aider

+3

Est-ce un devoir? –

+3

comme on vous l'a répété plusieurs fois, ce n'est pas un site de questions-réponses sur les mathématiques. –

+0

@Neil: On dirait qu'il demande un algorithme que je pourrais voir comme étant lié à la programmation, mais je ne connais pas son passé d'infractions passées :) –

Répondre

0

Voici un court passage d'un test d'analyse de droite à gauche pour un seul nombre utilisant des entiers et non des chaînes. Mais non testé:

int left_digits = n*n; 
int right_digits = 0; 
int next_right_digit_multiplier = 1; 
while ((left_digits > 0) && (right_digits < n)) 
{ 
    if ((left_digits + right_digits) == n) 
    { 
     return true; 
    } 

    int next_digit = left_digits % 10; 
    left_digits /= 10; 
    right_digits += (next_digit * next_right_digit_multiplier); 
    next_right_digit_multiplier *= 10; 
} 
return false; 

Notez qu'il serait sans doute préférable de trouver une théorie ici aussi si vous commencez à travailler avec des chiffres vraiment grands, par exemple ne tester que les rares cas où aucun des deux côtés n'a plus de chiffres que n (en ignorant les zéros en tête!).

1

convertir probablement la place du nombre initial d'une chaîne, puis vous pouvez convertir une partie de cette chaîne à ints et les ajouter. Stockez un int pour la position de l'indice de division et passez en revue chaque position de division d'index faisant le test.

Bien sûr, il existe bien d'autres façons de le faire.