Partage
  • Partager sur Facebook
  • Partager sur Twitter

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 !

    • Partager sur Facebook
    • Partager sur Twitter
      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.

      • Partager sur Facebook
      • Partager sur Twitter
        12 janvier 2019 à 16:21:06

        Oh. Et je peux le caster en int ?

        genre :

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

        • Partager sur Facebook
        • Partager sur Twitter
          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.
          • Partager sur Facebook
          • Partager sur Twitter

          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