开发者

solution to euler #8

开发者 https://www.devze.com 2023-04-11 14:21 出处:网络
#include <stdio.h> int main(void) { char *num = \"73167176531330624919225119674426574742355349194934\"
#include <stdio.h>

int main(void)
{
    char *num = "73167176531330624919225119674426574742355349194934"
    "96983520312774506326239578318016984801869478851843"
    "85861560789112949495459501737958331952853208805511"
    "12540698747158523863050715693290963295227443043557"
    "6689开发者_如何转开发6648950445244523161731856403098711121722383113"
    "62229893423380308135336276614282806444486645238749"
    "30358907296290491560440772390713810515859307960866"
    "70172427121883998797908792274921901699720888093776"
    "65727333001053367881220235421809751254540594752243"
    "52584907711670556013604839586446706324415722155397"
    "53697817977846174064955149290862569321978468622482"
    "83972241375657056057490261407972968652414535100474"
    "82166370484403199890008895243450658541227588666881"
    "16427171479924442928230863465674813919123162824586"
    "17866458359124566529476545682848912883142607690042"
    "24219022671055626321111109370544217506941658960408"
    "07198403850962455444362981230987879927244284909188"
    "84580156166097919133875499200524063689912560717606"
    "05886116467109405077541002256983155200055935729725"
    "71636269561882670428252483600823257530420752963450";


int i, tmp=1, product = 0;


for(i = 0; num[i] != NULL; i++)
{

    tmp *= (num[i] - '0');

    if((i+1) % 5 == 0)
    {

        if(tmp > product)
            product = tmp;

        tmp = 1;
    }

}

printf("Largest product ------> %i\n", product);

return 0;
}

The object is to find the largest product of five consecutive numbers in this 1,000 digit number. The answer is 40824, however my solution produces 31752. Any ideas as to where I have gone wrong?


You are only finding the highest product of each 5th set of 5 consecutive digits, not every set of 5 consecutive digits. You are only looking at 20% of the possible combinations.

e.g. on the first line of data, the first sequence you look at is "96983". The second is "52031".

You miss "69835", "98352", "83520" and "35203".


You should turn the 1000 digit number into one consecutive string of digits by removing the "\n" present instead of having separate lines like you do now. Then you will have a 5 digit window and the numbers within this window you will find the product and if the product is the largest thus far you save it and then slide the window down one digit and repeat until the end. This should leave you with your answer.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号