Given two unsorted arrays A[i] & B[j], you need to find a "pair of numbers" satisfying the following:
Now, count such pairs in the given two unsorted array of elements. Note, that the two arrays has same number of elements.
Method 1:
- Sort the array A in Descending order
- Sort the array B in Ascending order
- set index i to 1, count = 0 and check whether A[i] % B[i] == 0 OR B[i] % A[i] == 0
- If the above condition satisfied, increment count else continue the loop until N, the number of elements in both of the arrays.
#include <stdio.h>
/* Array size */
#define MAX 1000000
int main()
{
    int B[MAX],G[MAX];
    int t,N,i,count,j,temp;
    
    /* Get the number of test cases from the user */
    scanf("%d",&t);
    
    while(t--)
    {
     
     /* Initialize the count as zero for every test case */
        count=0;
        
        /* Get the number of elements of the array */
        scanf("%d",&N);
        
        /* Get the elements of the array 1 */
        for(i=0;i<N;i++)
        {
           scanf("%d",&B[i]);
        }
        
        /* Get the elements of the array 2 */
        for(i=0;i<N;i++)
        {
           scanf("%d",&G[i]);
        }
        
        for(i=0;i<N;i++)
         for(j=i+1;j<N;j++)
         {
             if(B[i]<B[j])
              continue;
             else
             {
                 temp=B[i];
                 B[i]=B[j];
                 B[j]=temp;
             }
         }
         
        for(i=0;i<N;i++)
         for(j=i+1;j<N;j++)
         {
              if(G[i]>G[j])
               continue;
              else
              {
                   temp=G[i];
                   G[i]=G[j];
                   G[j]=temp;
              }
         }
        
        /* For every pair, increment the count */
        for(i=0;i<N;i++)
         if((B[i]%G[i])==0 || (G[i]%B[i])==0)
          count++;
        
        /* Print the count for every test case */
        printf("%d\n",count);
    }
    return 0;
}