2016-06-06 1 views
-4

Il existe un tableau de type int. Je dois multiplier certains de ses éléments et signaler le produit% (10^9 + 7) et le premier chiffre du produit. J'ai essayé ceci en utilisant la classe BigInteger de Java mais la réponse rapportée n'est pas correcte. Je veux juste savoir si un tel algorithme existe pour garder une trace du premier chiffre et qui n'utilise pas BigInteger.Récupérer le premier chiffre d'un nombre extrêmement grand

C'est ce que j'avais essayé de faire.

c= (Prod.bitCount())*Math.log10(2); 
c2= (int)c; 
First= (Prod.divide(TEN.pow(c2))).intValue(); 
if(First/10 != 0) First/=10; 
System.out.print(First+" "); 
//finding Prod%M 
System.out.print(Prod.mod(M)+"\n"); 
+2

pouvez-vous s'il vous plaît ajouter des données d'échantillon et le résultat attendu, le code que vous avez essayé en utilisant 'BigInteger' ** et ** * réponse incorrecte signalée *. Merci! ;) –

+0

'BigInteger' peut être converti en une représentation String et vous pouvez utiliser' chaine.charAt (0) 'pour obtenir le premier nombre – TheLostMind

+0

Voici la question: https: //www.codechef.com/JUNE16/problems/FRJUMP – Aniq55

Répondre

1

int x = Integer.parseInt(""+prod.toString().charAt(0));

Je pense que quelqu'un avait un commentaire semblable ci-dessus.

+0

J'ai essayé de le faire, mais je obtenir une mauvaise réponse. – Aniq55

+0

Pourriez-vous élaborer un peu? Quelle réponse obtenez-vous, et quelle valeur utilisez-vous? – RobotKarel314

+0

J'ai donné mon code ci-dessus. Im obtenir la sortie correcte pour l'E/S de l'échantillon, mais pour les données d'entrée réelles, le juge en ligne dit que ma réponse est erronée. J'ai donné le lien de la question dans les commentaires – Aniq55

0
int prod; 
    ... 
int first = prod/
    ((int)Math.pow(10, (int)Math.log10(prod))); 

C'est non testé, juste à côté du haut de ma tête, mais devrait donner l'idée générale.

+0

prod est extrêmement grand, donc le débordement de données se produit et par conséquent le mauvais résultat. – Aniq55

+0

Vous avez demandé si cela pouvait être fait sans un'BigInteger'; J'ai donné une réponse qui n'utilise pas BigInteger. Si vous dites 'Prod' ** a ** pour être un' BigInteger', alors @TheLostMind a la bonne idée. –

+0

Ce dont j'ai besoin est le premier chiffre et la valeur modulo, donc je devrais être capable de travailler sans utiliser BigInteger parce que poeple a soumis le code dans d'autres langues qui ne supportent pas BigInteger comme les classes – Aniq55