Wednesday, July 25, 2018

MockVita 3 (2018)

Base 6

Problem Description

Given a sequence of distinct numbers a1, a2, ….. an, an inversion occurs if there are indices i<j such that ai > aj .
For example, in the sequence 2 1 4 3 there are 2 inversions (2 1) and (4 3).
The input will be a main sequence of N positive integers. From this sequence, a Derived Sequence will be obtained using the following rule. The output is the number of inversions in the derived sequence.
Rule for forming derived sequence
An integer may be represented in base 6 notation. In base 6, 10305 is 1x64 + 3x62 + 5 =1409. Note that none of the digits in that representation will be more than 5.
The sum of digits in a base 6 representation is the sum of all the digits at the various positions in the representation. Thus for the number 1409, the representation is 10305, and the sum of digits is 1+0+3+0+5=9. The sum of digits may be done in the decimal system, and does not need to be in base 6
The derived sequence is the sum of the digits when the corresponding integer is represented in the base 6 form number will be expressed in base 6, and the derived sequence is the sum of the digits of the number in the base 6 representation.

Constraints

N <= 50
Integers in sequence <= 107

Input Format

The first line of the input will have a single integer, which will give N.
The next line will consist of a comma separated string of N integers, which is the main sequence

Output

The number of inversions in the derived sequence formed from the main sequence.

Explanation

Example 1
Input
5
55, 53, 88, 27, 33
Output
2
Explanation
The number of integers is 5, as specified in the first line. The given sequence is 55, 53, 88, 27, 33.
The base 6 representation is 131, 125, 224, 43, 53 The derived sequence is 5,8,8,7,8 (corresponding to the sum of digits). The number of inversions in this is 2, namely (8, 7), (8, 7)
Example 2
Input
8
120,21,47,64,72,35,18,98
Output
11

Explanation
The base 6 representation of this is 320,33,115,144,200,55,30,242, and the derived sequence (sum of digits) is 5,6,7,9,2,10,3,8. The number of inversions is 11 (5,2), (5,3),(6,2) (6,3), (7,2), (7,3) (9,2),(9,3) (9,8),(10,3), (10,8)


Program:

#include<stdio.h>
#include<math.h>
int sum(int a)
{
    int s=0,r;
    while(a>0)
    {
       r=a%10;
       s+=r;
       a=a/10;
    }
    return s;
}
int main()
{
    int a[100],b[100],c[100],i,n,j,rem,s=0,cn=0;
    char ch;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        if(i<n-1)
        scanf("%c",&ch);
    }
    for(i=0;i<n;i++)
    {
        j=0;
        while(a[i]>0)
        {
            rem=a[i]%6;
            s=s+(rem*pow(10,j));
            a[i]=a[i]/6;
            j++;
        }
        b[i]=s;
        s=0;
    }
    for(i=0;i<n;i++)
    {
    c[i]=sum(b[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(c[i] >c[j])
                cn++;
        }
    }
    printf("%d",cn);
    return 0;
}



Digital Time

Problem Description

The objective is to form the maximum possible time in the HH:MM:SS format using any six of nine given single digits (not necessarily distinct)
Given a set of nine single (not necessarily distinct) digits, say 0, 0, 1, 3, 4, 6, 7, 8, 9, it is possible to form many distinct times in a 24 hour time format HH:MM:SS, such as 17:36:40 or 10:30:41 by using each of the digits only once. The objective is to find the maximum possible valid time (00:00:01 to 24:00:00) that can be formed using some six of the nine digits exactly once. In this case, it is 19:48:37.

Input Format

A line consisting of a sequence of 9 (not necessarily distinct) single digits (any of 0-9) separated by commas. The sequence will be non-decreasing

Output

The maximum possible time in a 24 hour clock (00:00:01 to 24:00:00) in a HH:MM:SS form that can be formed by using some six of the nine given digits (in any order) precisely once each. If no combination of any six digits will form a valid time, the output should be the word Impossible

Explanation

Example 1
Input
0,0,1,1,3,5,6,7,7
Output
17:57:36
The maximum valid time in a 24 hour clock that can be formed using some six of the 9 digits precisely once is 17:57:36
Example 2
Input
3,3,3,3,3,3,3,3,3
Output
Impossible
No set of six digits from the input may be used to form a valid time.


Program:




#include<stdio.h>
int main()
{
    int a[9],i,j,max,hr,mn,sc;
    char ch;
    for(i=0;i<9;i++)
    {
        scanf("%d",&a[i]);
        if(i<8)
        scanf("%c",&ch);
    }
    if(a[0]>2)
    {
        printf("Impossible");
        return 0;
    }
    for(i=0;i<9;i++)
    {
        if(a[i]>2)
        {
            hr=a[i-1];
            for(j=i-1;j<8;j++)
                a[j]=a[j+1];
            break;
        }
    }
    if(i==9 && a[8]==0)
    {
        printf("Impossible");
        return 0;
    }
    else if(i==9)
        hr=a[8];
    if(hr==2)
    {
        for(i=0;i<8;i++)
        {
            if(a[i]==4 && a[3]==0)
            {
                printf("24:00:00");
                return 0;
            }
           
            if(a[i]>3)
            {
            hr=(hr*10)+a[i-1];
            for(j=i-1;j<8;j++)
                a[j]=a[j+1];
            break;
            }
        }
        if(i==8)
            hr=(hr*10)+a[7];
    }
    else
        hr=(hr*10)+a[7];
    if(a[0]>5)
    {
        printf("Impossible");
        return 0;
    }
    for(i=0;i<7;i++)
    {
        if(a[i]>5)
        {
            mn=a[i-1];
            for(j=i-1;j<6;j++)
                a[j]=a[j+1];
            break;
        }
    }
    if(i==7)
        mn=a[6];
    mn=(mn*10)+a[5];
    if(a[0]>5)
    {
        printf("Impossible");
        return 0;
    }
    for(i=0;i<5;i++)
    {
        if(a[i]>5)
        {
            sc=a[i-1];
            for(j=i-1;j<4;j++)
                a[j]=a[j+1];
            break;
        }
    }
    if(i==5)
        sc=a[4];
    sc=(sc*10)+a[3];
    printf("%.2d:%.2d:%.2d",hr,mn,sc);
    return 0;
}

No comments:

Post a Comment