조띵의지극히개인적인공간


1000자리 수에서 가장 큰 연속한 자릿수 5개의 곱은 얼마인가요?


Find the greatest product of five consecutive digits in the 1000-digit number.


내맘대로 해설:
 번역이 애매모호해서 원문을 보니 이해가 되었다. 주어진 1000자리 수 중에서 연속한 5개 숫자의 곱 중 가장 큰 값은?

문제를 보고 처응 떠오른 아이디어는 순차적으로 계산하되 다음으로 넘어갈때 처음 숫자를 나누고 다음 숫자를 곱하면 되겠다 했는데... 
중간에 0이라는 놈 때문에 그렇게 할순 없었고...
 
결국 순차적으로 계산하고 대신 0을 만날경우 바로 0 다음부터 계산하는 루틴을 넣었다. 워낙 미비한거라.. 실제 속도에 큰영향을 끼치진 못할듯 하다.






void func()
{
char Numbers[]="73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450";

int MaxValue=0;
for (int i=0; i<sizeof(Numbers)/sizeof(char); i++)
{
bool FoundZero = false;
int Value=1;
for (int o=i; o<i+5; o++)
{
if (Numbers[o]=='0')
{
FoundZero = true;
i=o;
break;
}
Value *= Numbers[o]-'0';
}
if (FoundZero) continue;

MaxValue = max(MaxValue, Value);
}

printf("MaxValue = %d\n", MaxValue);
}


저작자 표시
신고
Posted by 조띵


티스토리 툴바