Hello, OnlineGDB Q&A section lets you put your programming query to fellow community users. Asking a solution for whole assignment is strictly not allowed. You may ask for help where you are stuck. Try to add as much information as possible so that fellow users can know about your problem statement easily.

Array Product

0 votes
asked Jul 21, 2018 by ravindra reddy (340 points)

Array Product

Problem Description

You are given a list of N integers and another positive integer K. Write a program to compute the number of ways in which the product P of the given N integers can be expressed as a product of K positive integers (not necessarily distinct). The order of the factors in the expression is not important. For example, 1 x 2 x 3 and 2 x 3 x 1 are not counted as different ways of expressing 6 as a product of three integers.

Constraints

The product of the N integers <= 10^9

Each of the N integers <=5000

Input Format

Output

One line containing the number of ways in which the product of the N integers can be expressed as a product of K positive integers

Explanation

Example 1

Input

2 4

2 3

Output

2

Explanation

The product of the given integers is 6. This can be expressed as a product of 4 integers in 2 ways: 1x1x1x6, 1x1x2x3

Example 2

Input

2 3

4 16

Output

7

Explanation

The product is 64. This can be expressed as a product of three integers in the following ways:

1 x 1 x 64

1 x 2 x 32

1 x 4 x 16

1 x 8 x 8

2 x 2 x 16

2 x 4 x 8

4 x 4 x 4

1 Answer

0 votes
answered Jul 21, 2018 by ravindra reddy (340 points)
#include <stdio.h>
int c=0;
void product(int k,int i,int m)
{
    int j;
    if(k==0)
    {
        if(i<=m)
        {
            c++;
        return;
        }
    }
    else
    {
        if(i>m)
            return ;
        for(j=i;j<=m;j++)
        {
            if(m%j == 0)
                product(k-1,j,m/j);
        }
    }
}
int main()
{
   int n,k,a[10],m=1,i,j;
   scanf("%d%d",&n,&k);
   for(i=0;i<n;i++)
   {
       scanf("%d",&a[i]);
       m=m*a[i];
   }
   for(i=1;i<=m;i++)
   {
        if(m%i==0)
            product(k-2,i,m/i);
   }
   printf("%d\n",c);
   return 0;
}
Welcome to OnlineGDB Q&A, where you can ask questions related to programming and OnlineGDB IDE and and receive answers from other members of the community.
...