Project Euler Problem 8

This is a discussion on Project Euler Problem 8 within the C Programming forums, part of the General Programming Boards category; I'm having a bit of trouble solving this problem. The objective is to find the largest product of five consecutive ...

  1. #1
    Registered User
    Join Date
    Aug 2011
    Posts
    24

    Project Euler Problem 8

    I'm having a bit of trouble solving this problem. The objective is to find the largest product of five consecutive digits in this 1,000 digit number.
    Code:
    #include <stdio.h>
    
    int main(void)
    {
    	char *num = "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "66896648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450";
    
    
    	int i, tmp=1, product = 0, final_product = 0;
    
    
    	for(i = 0; num[i] != NULL; i++)
    	{
    		printf("%i\n", num[i] - '0');
    
    		tmp *= num[i] - '0';
    
    		if((i+1) % 5 == 0)
    		{
    			printf("------------------------\n");
    			product = tmp;
    
    			tmp = 1;
    
    			if(product > final_product)
    				final_product = product;
    		}
    
    	}
    
    	printf("Largest product ------> %i\n", final_product);
    
    	return 0;
    }
    The answer should be 40,824 but I'm getting 31,752. Any ideas where I'm going wrong?

  2. #2
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    1,625
    Your implementation is loosy. Why don't you use strlen()? That way you'll be able to iterate the digits properly.

    EDIT: You mean you solved the former 7? Bravo, keep it up!
    Last edited by GReaper; 10-06-2011 at 01:42 PM.
    Devoted my life to programming...

  3. #3
    Algorithm Dissector iMalc's Avatar
    Join Date
    Dec 2005
    Location
    New Zealand
    Posts
    6,307
    Take the first ten digits: 7316717653
    You need to calculate all of these:
    Code:
    7*3*1*6*7 = ?
      3*1*6*7*1 = ?
        1*6*7*1*7 = ?
          6*7*1*7*6 = ?
            7*1*7*6*5 = ?
              1*7*6*5*3 = ?
    But you are only calculating the underlined ones.
    My homepage
    Advice: Take only as directed - If symptoms persist, please see your debugger

    Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. project euler challenge 11
    By 4play in forum C Programming
    Replies: 3
    Last Post: 07-13-2010, 02:09 PM
  2. Project Euler
    By CodeGuru25 in forum C Programming
    Replies: 2
    Last Post: 01-13-2010, 05:25 AM
  3. Project Euler Problem 14 Segfault
    By vincent01910 in forum C Programming
    Replies: 5
    Last Post: 11-04-2009, 04:56 AM
  4. Project Euler problem 3
    By SELFMADE in forum C Programming
    Replies: 7
    Last Post: 09-16-2009, 03:33 AM
  5. Project Euler Question
    By Head In Jar Man in forum C++ Programming
    Replies: 6
    Last Post: 04-26-2009, 02:59 PM

Tags for this Thread


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21