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
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();
}