Computer Science, asked by nunnavandana3, 6 months ago

Given N three-digit numbers, your task is to find bit score of all N numbers and then print the number of pairs possible based on these calculated bit score. 1. Rule for calculating bit score from three digit number: From the 3-digit number, · extract largest digit and multiply by 11 then · extract smallest digit multiply by 7 then · add both the result for getting bit pairs. Note: - Bit score should be of 2-digits, if above results in a 3-digit bit score, simply ignore most significant digit. Consider following examples: Say, number is 286 Largest digit is 8 and smallest digit is 2 So, 8*11+2*7 =102 so ignore most significant bit , So bit score = 02. Say, Number is 123 Largest digit is 3 and smallest digit is 1 So, 3*11+7*1=40, so bit score is 40. 2. Rules for making pairs from above calculated bit scores Condition for making pairs are · Both bit scores should be in either odd position or even position to be eligible to form a pair. · Pairs can be only made if most significant digit are same and at most two pair can be made for a given significant digit. Constraints N<=500 Input Format First line contains an integer N, denoting the count of numbers. Second line contains N 3-digit integers delimited by space Output One integer value denoting the number of bit pairs. Timeout 1 Explanation Example 1 Input 8 234 567 321 345 123 110 767 111 Output 3 Explanation After getting the most and least significant digits of the numbers and applying the formula given in Rule 1 we get the bit scores of the numbers as: 58 12 40 76 40 11 19 18 No. of pair possible are 3: 40 appears twice at odd-indices 3 and 5 respectively. Hence, this is one pair. 12, 11, 18 are at even-indices. Hence, two pairs are possible from these three-bit scores. Hence total pairs possible is 3

Answers

Answered by akshajchandwani
11

Answer:le=int(input())

In1=input()

li=[]

li.append(In1.split(" "))

if(le<=500):

   l=[]

   for i in range(le):

       l.append(li[0][i])

   for i in range(len(l)):

       ma=int(max(l[i]))

       mi=int(min(l[i]))

       res=str((ma*11)+(mi*7))

       if(len(res) > 2):

           l[i]=res[1:]

       else:

           l[i]=res

   freqe = {}

   freqo = {}

   p={}

   i=1

   for ele in l:

       if(i%2==0):

           if ele[0] in freqe:

                   freqe[ele[0]] += 1

                   if(freqe[ele[0]]==2):

                       p[ele[0]]=1

                   elif(freqe[ele[0]]>2):

                       p[ele[0]]=2

           else:

               freqe[ele[0]] = 1

       else:

           if ele[0] in freqo:

                   freqo[ele[0]] += 1

                   if(freqo[ele[0]]==2):

                       p[ele[0]]=1

                   elif(freqo[ele[0]]>2):

                       p[ele[0]]=2

           else:

                   freqo[ele[0]] = 1

       i+=1

   pair=0

   for x in p:

       pair=pair+p[x]

   print(pair)

Explanation:

first we take input of N then the 3 digit numbers and find the max and min later multiply them and add to result ,if the res is more the 2 digit remove the top significant digit and then find the pais

Answered by sreekanthmishra
0

Answer:

#include<iostream>

using namespace std;

int bit_score(int n)

{

int a, b, c, largest, smallest;

int score;

a = n%10; n/=10;

b = n%10; n/=10;

c = n%10; n/=10;

largest = (a>b)?a:b;

largest = (c>largest)?c:largest;

smallest = (a<b)?a:b;

smallest = (c<smallest)?c:smallest;

score = largest*11 + smallest*7;

score = score % 100;

return score;

}

int findPairs (int score_array[], int N)

{

int sig_dig[10], i, pairs = 0, msb;

for(i=0; i<10; i++)

{

sig_dig[i] = 0;

}

for(i=0; i<N; i=i+2)

{

  msb = score_array[i] / 10;

  for(int j =i+2; j<N; j=j+2)

  {

     if(msb == score_array[j]/10)

     {

       if(sig_dig[msb] < 2)

       {

   sig_dig[msb]++;

       }

     }

   }

  }

  for(i=1; i<N; i=i+2)

  {

    msb = score_array[i] / 10;

    for(int j =i+2; j<N; j=j+2)

    {

        if(msb == score_array[j]/10)

        {

               if(sig_dig[msb] < 2)

               {

         sig_dig[msb]++;

        }

           }

       }

}

for(i=0; i<10; i++)

       {

   pairs = pairs + sig_dig[i];

}

return pairs;

}

int main()

{

int N, i;

int ip_array[501];

int score_array[501];

int pairs;

cin>>N;

for(i=0; i<N; i++)

{

 cin>>ip_array[i];

}

for(i=0; i<N; i++)

{

score_array[i] = bit_score(ip_array[i]);

}

pairs = findPairs(score_array, N);

cout<<pairs;

return 0;

}

Explanation:

#SPJ3

Similar questions