Problem 8 : Largest product in a series (5%)

link

Description

original

The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

간략해석

위의 수에서 연속된 13개수의 곱 중 최댓값을 구하여라.

Idea & Algorithm

naive idea

1000자리니까 반복문으로 구하면 된다.

advanced idea

만약 0이 없다면 계속 13개씩 하는 것보다는 앞에 값으로 나눠주고, 뒤에 값을 곱해주는 것이 효율적이다. 허나 이 경우에는 0이 포함되어있으니 나이브하게 푸는 것이 좋다.

또한 1000자리수는 C로는 받을 수 없으니 문자열로 받고 처리를 하는 것이 중요하다. 그리고 9^13의 경우에는 2541865828329으로 int범위를 넘어가므로 long long으로 풀어야한다.

source code

#include <stdio.h>
#define ll long long

char arr[1005];

int main(){
    for(int i = 0; i < 1000 ; i++){
        scanf(" %c",arr+i);
        arr[i]-='0';
    }
    ll max = 0;
    for(int i = 0 ; i < 988 ; i++){
        ll tmp = 1;
        for(int j = 0 ; j < 13 ; j++){
            tmp *= arr[i+j];
        }
        max = max > tmp ? max : tmp;
    }
    printf("%lld",max);
}

Leave a Comment