Computer Science, asked by abhishekpathakp363, 9 months ago

Digit Pairs
Problem Description
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 hemanshimakwana7
3

Answer:

Explanation:#include<stdio.h>

void main()

{

// Declare variables

int N,j,num,l=0,s=1000,reminder,i,count,numOfPairs=0;

int numbers[500],bitScore[500];

char tem;

// Read N

cin>>n;

scanf("%d",&N);

j=0;

// Read N numbers to array

do {

scanf("%d%c", &numbers[j], &tem);

j++;

} while(tem != '\n');

// Find the bit score

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

{

num=numbers[j];

l=0;

s=1000;

// Find l and s digit

while (num > 0) {

reminder = num % 10;

if (reminder > l)

{

l = reminder;

}

if (reminder < s)

{

s = reminder;

}

num = num / 10;

}

// To make it 2 digit divide it by 100

bitScore[j]=((l*11)+(s*7))%100;

}

// Find the pairs

for(i=1;i<9;i++)

{

count=0;

// Check for even index

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

{

// To get the most significant digit

num=bitScore[j]/10;

if(num==i)

count++;

}

//if two numbers found it forms one pair

if(count==2)

numOfPairs++;

else if(count>=3)

numOfPairs=numOfPairs+2;

count=0;

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

{

 num=bitScore[j]/10;

 if(num==i)

 count++;

}

if(count==2)

numOfPairs++;

else if(count>=3)

numOfPairs=numOfPairs+2;

}

// Print the result

printf("%d", numOfPairs);

// Pause the screen

getchar();

}

Similar questions