Find the greatest product of $K$ consecutive digits in the $N$ digit number.
Input Format
First line contains $T$ that denotes the number of test cases. First line of each test case will contain two integers $N$ & $K$. Second line of each test case will contain a $N$ digit integer.
Output Format
Print the required answer for each test case.
Constraints:
$1 \le T \le 100$
$1 \le K \le 7$
$K \le N \le 1000$
Complexity: $O (kn)$ <syntaxhighlight lang="c" name="productofkdigits">
int main() {
char array[1001];
int i, j, l, k, n, num;
scanf("%d", &num);
for(i = 0; i < num; i++)
{
scanf("%d%d", &n, &k);
scanf("%s", array);
unsigned long big = 0;
for(j = 0; j < strlen(array)-k; j++)
{
unsigned long product = 1;
for(l = j; l < j+k; l++)
product *= array[l]-'0';
if(product > big)
big = product;
}
printf("%lu\n", big);
}
}
</syntaxhighlight>
Complexity: $O (n)$ <syntaxhighlight lang="c" name="productofkdigits">
int main() {
char array[1001];
unsigned long prod[1001];
int i, j, l, k, n, num;
scanf("%d", &num);
for(i = 0; i < num; i++)
{
scanf("%d%d", &n, &k);
scanf("%s", array);
unsigned long big = 0;
prod[0] = array[0]-'0';
for(j = 1; j < strlen(array); j++)
{
if(j < k)
prod[j] = prod[j-1]*(array[j]-'0');
else
prod[j] = prod[j-1]*(array[j]-'0')/prod[j-k];
if(prod[j] > big)
big = prod[j];
}
printf("%lu\n", big);
}
} </syntaxhighlight>
This work is licensed under the CC By-SA 3.0 , without all the cruft that would otherwise be put at the bottom of the page.
Sister Sites: GATE CSE Wiki, GATE CSE, Aptitude Overflow