Partage

Projet Euler pb n 8

12 janvier 2019 à 12:50:29

Bonjour tout le monde.

Je débute, j'ai commencé les exercices du projet euler, j'en suis au numero 8 mais je bloque.

Je comprends pas pourquoi mais dans mes resultat, mon produit part de manière exponentielle.

public class Euler8 {

	public static void main(String[] args) {
	
		String nombre ="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450" ;
		byte tailleProduit = 4;
		short i=0, j=0;
		long produit =1, produitTmp =1;
		
		for(i=0; i< nombre.length()-(tailleProduit ) ; i++) {
			
			for(j=i; j <= i+tailleProduit ; j++) {
				System.out.println("Je vais de mutliplier " + produitTmp +" par "+ nombre.charAt(j));
				produitTmp = produitTmp * (nombre.charAt(j)); // C'est la que ça marche pas et je comprends pas pourquoi.
				System.out.println("ca fait "+ produitTmp);
			}
		if (produitTmp > produit) produit = produitTmp;
		produitTmp =1;
		}
		
		System.out.println(produit);
	}
}


Quand je l'execute, mon produit part très haut, alors qu'il me semble que l'instruction :

produitTmp = produitTmp * (nombre.charAt(j));


Ne fait que mutliplier une seule fois un nombre par un chiffre.

Bref je débute je comprends pas.

Merci d'avance !

12 janvier 2019 à 13:50:47

Bonjour,

nombre.charAt(i) retourne le caractère à la position i. Si le caractère est '1', il vaut 49 (son code unicode).

Donc pour 111, tu vas trouver 49^3.

12 janvier 2019 à 16:21:06

Oh. Et je peux le caster en int ?

genre :

produitTmp = produitTmp * ( (int) nombre.charAt(j));

12 janvier 2019 à 16:55:27

Non, le cast n'y changera rien. Il faut l'interpréter. Regarde dans la classe Character la méthode digit.

Projet Euler pb n 8

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown