One Egg - Code Vita 2017 | Round-2

One Egg

Problem

"One Egg" is an egg supply company which supplies eggs to retailers. They have M classes of eggs. Each class can have N number of eggs (N can be same or can vary class to class).  They accept an order via mail for X eggs. In response, they confirm if they can supply the eggs with a "Thank you" note and the number of eggs or with a "Sorry" note and the numbers of eggs they can supply. They also mention the breakdown of eggs by class they will supply. The ordered eggs are adjusted against the different classes with the most number of eggs adjusted first then the balance is adjusted against the second highest and so on.   The company is a bit superstitious as well. If the number of eggs ordered is greater than or equal to the total number of eggs in stock then they retain one egg and responds back with the "Sorry" note with total number of eggs in stock minus one and breakdown of eggs by class.  

Note: If the classes have same number of eggs then class entered first should be selected to adjust. 

Input Format

 First line contains two space-separated integers denoting the respective values of M (the number of classes of eggs) and X, the number of eggs ordered  The following M lines contain an integer each indicating the number of eggs available in each class 

Output Format  

First line should be, if X is less than total number of Eggs then Print  " Thank you, your order for X eggs is accepted"  Else if X is greater than or equal to total number of Eggs then print "  " Sorry, we can only supply (total number of Eggs in stock -1) eggs"  T hen M lines with 3 columns:  First column - Number of eggs available in each class  Second column - Eggs allocated against each class for that order  Third column - Balance Eggs against each class

Constraints

 1 ≤ M ≤ 20  N ≥ 1  X ≥ 1
 
 
Example 1  
Input  
5 150  
50  
15  
80  
10  
5  

Output  
Thank you, your order for 150 eggs are accepted  
5 0         50        0  
1 5         15        0                      
8 0        80        0  
1 0        5          5          
5           0          5  

Explanation 
 Total order of 150 eggs is less than the total number of Eggs 50+15+80+10+5 = 160. Hence the Thank you message.  150 was first adjusted against Class with first highest number of eggs 80. Balance of 150-80 = 70 was adjusted against second highest class of 50. Balance of 70-50 = 20 then adjusted against 15. Balance of 20-15 = 5 then adjusted against 10 leaving behind 5 eggs in that class.
  
Example 2
  
Input 
 
4 250  
80  
50  
70  
20  

Output 

Sorry, we can only supply 219 eggs  
8 0        80        0  
5 0        50        0                      
7 0        70        0  
2 0        19        1           

Explanation 
Total order of 250 eggs was greater than the total number of eggs 80+50+70+20 = 220. Hence the sorry message.  250 was first adjusted against Class with first highest number of eggs 80. Balance of 250-80 = 170 was adjusted against second highest class of 70.   Balance of 170-70 = 100 was then adjusted against 50. Balance of 100-50 = 50 then adjusted against 20. Since Balance is greater than 
last class of egg all but one egg is left in that last class.

Program

#include <stdio.h>
int main() {
int m,x,i,a[1000],sum=0,s;
scanf("%d %d",&m,&x);
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
if(sum>x)
    printf("Thank you, your order for %d eggs are accepted\n",x);
else
{
    printf("Sorry, we can only supply %d eggs\n",sum-1);
    x=sum-1;
}
for(i=0;i<m;i++)
{
    if(x>=a[i])
    {
        printf("%d\t%d\t%d\n",a[i],a[i],0);
        x=x-a[i];
    }
    else if(x<a[i])
    {
        s=a[i]-x;
     printf("%d\t%d\t%d\n",a[i],x,s);
     x=0;
     }
     
     else if(x==0)
     printf("%d\t%d\t%d\n",a[i],0,a[i]);
    
}
return 0;
}


Output

Thank you, your order for 150 eggs are accepted
50 50 0
15 15 0
80 80 0
10 5 5
5 0 5


You can also run it on an online IDE: https://ide.geeksforgeeks.org/1NJLg1Fo5N

Your feedback are most welcome! If you have any doubt contact me or leave a comment!! Cheers!!!
 

Counting Rock Samples - Code Vita 2017 | round 1

Counting Rock Samples

Problem


 Juan Marquinho is a geologist and he needs to count rock samples in order to send it to a chemical laboratory. He has a problem: The laboratory only accepts rock samples by a range of its size in ppm (parts per million).
Juan Marquinho receives the rock samples one by one and he classifies the rock samples according to the range of the laboratory. This process is very hard because the number of rock samples may be in millions.
Juan Marquinho needs your help, your task is develop a program to get the number of rocks in each of the ranges accepted by the laboratory. 

Input 

 An positive integer S (the number of rock samples) separated by a blank space, and a positive integer R (the number of ranges of the laboratory); A list of the sizes of S samples (in ppm), as positive integers separated by space R lines where the ith line containing two positive integers, space separated, indicating the minimum size and maximum size respectively of the ith range.

Output 

 R lines where the ith line containing a single non-negative integer indicating the number of the samples which lie in tin the ith range. 

Constraints 

10 ≤ S ≤ 10000 1 ≤ R ≤ 1000000 1≤size of each sample (in ppm) ≤ 1000
Example 1
Input: 10 2 
           345 604 321 433 704 470 808 718 517 811 
           300 350 
           400 700
Output: 2 4
Explanation: 
There are 10 samples (S) and 2 ranges ( R ). The samples are 345, 604,…811. The ranges are 300-350 and 400-700. There are 2 samples in the first range (345 and 321) and 4 samples in the second range (604, 433, 470, 517). Hence the two lines of the output are 2 and 4
Example 2
Input: 20 3 
           921 107 270 631 926 543 589 520 595 93 873 424 759 537 458 614 725 842 575 195 
           1 100 
           50 600 
           1 1000
Output: 1 12 20
Explanation: 
There are 20 samples, and 3 ranges. The samples are 921, 107 … 195. The ranges are 1-100, 50-600 and 1-1000. Note that the ranges are overlapping. The number of samples in each of the three ranges are 1, 12 and 20 respectively. Hence the three lines of the output are 1, 12 and 20.

Program

#include <stdio.h>
int main() {
int a[1000],s,i,j,t,l1,l2,c=0;
scanf("%d",&s);
scanf("%d",&t);
for(i=0;i<s;i++)
scanf("%d",&a[i]);
for(i=0;i<t;i++)
{
scanf("%d %d",&l1,&l2);
for(j=0;j<s;j++)
{
    if((a[j]>=l1)&&(a[j]<=l2))
    c++;
}
printf("%d\n  ",c);
c=0;
}
return 0;
}

Output

20 3 
921 107 270 631 926 543 589 520 595 93 873 424 759 537 458 614 725 842 575 195 
1 100 
50 600 
1 1000

1
12
20

You can also run it on an online IDE: https://ide.geeksforgeeks.org/fkaX23kbLX

Your feedback are always welcome! If you have any doubt you can contact me or leave a comment!! Cheers!!!

Related Links: Kth factor of N
                       

Kth largest factor of N - Code Vita 2017 | round 1

 kth largest factor of N  

Problem

A positive integer d is said to be a factor of another positive integer N if when N is divided by d, the remainder obtained is zero. For example, for the number 12, there are 6 factors 1, 2, 3, 4, 6, 12. Every positive integer k has at least two factors, 1 and the number k itself.
 Given two positive integers N and k, write a program to print the kth largest factor of N.  

Input 

The input is a comma separated list of positive integer pairs (N, k)

Output 

The kth highest factor of N. If N does not have k factors, the output should be 1.

Constraints 

1<N<10000000000. 1<k<600
You can assume that N will have no prime factors which are larger than 13.
Example 1 
Input: 12,3
Output: 4
Explanation:
N is 12, k is 3. The factors of 12 are (1,2,3,4,6,12). The highest factor is 12 and the third largest factor is 4. The output must be 4
Example 2 
Input: 30,9
Output: 1
Explanation:
 N is 30, k is 9. The factors of 30 are (1,2,3,5,6,10,15,30). There are only 8 factors. As k is more than the number of factors, the output is 1.

Program

#include <stdio.h>
int main() {
int n,k,i,c=0;
scanf("%d",&n);
scanf("%d",&k);
for(i=n;i>=1;i--)
{
    if((n%i)==0)
    c++;
    if(c==k)
    {
    printf("%d",i);
    break;
    }
}
if(c!=k)
printf("1");
return 0;
}

Output




12 3



4


You can run it in an online IDE: https://ide.geeksforgeeks.org/6xxVFQA20s


Your feedback are most welcome! If you have any doubt you can contact me or leave a comment!! Cheers!!!

Related Links: The Great Chase

The Great Chase - Code Vita 2017 | round 1

The Great Chase

Problem

Welcome to the Planet Zandar, the second most prominent planet in the Milky Way Galaxy (of course after our own Earth). 
The planet  is in a distress condition, a Group of Galactic pirates, Zorons have stolen the Trident Crystal, which is the main source of energy of the planet, and are escaping the Galaxy. The Nova Corps, the military agency of Zandar, have gathered intelligence that the Zoronion space craft can run in cosmic leaps of exactly D units, (it means that the space craft will move D units from its position in every leap/turn) and is currently I units away from Zandar. 
The Zandarian Space crafts can run in cosmic leaps of exactly Z units. The Commander of Nova Corps wants to know the smallest number of leaps required to catch Zorons (Note that it is possible to catch the pirates only when they will be at the same point in the cosmic universe). The Zorons, even though are clever thieves, travel in one direction, and keep jumping exactly D units without stopping at any point. The Nova Corps can dial in the number of jumps they need to make (each of them exactly Z units), and reach the place almost instantly. They can then wait there until the Zorons arrive, and recover the Trident Crystal.
However, their wizard has told them that there may be situations where it is impossible for the Nova corps to be at the same distance as the Zorons. 
As the planet is out of power currently, their supercomputers are shut down and they are not able to calculate the required information. As you are there from Earth they have approached you for help.
Note: Assume that the Cosmic universe is one dimensional.

Input

An integer T for number of test cases, followed by T test cases each one consisting of three numbers 1) I :- initial distance of Zorons 2) D:- distance covered in a single cosmic leap by Zoronion space craft. 3) Z:- distance covered by Zandarian space crafts. 

Output  

Single number, the number of leaps required to catch the pirates, and if it is not possible to catch them, output will be -1

Constraints 

 1 ≤ I,D ≤ 1012 1≤ Z ≤ 109

Example 1

Input: 2 9 5 12 5 7 9

 

Output: 2 6
Explanation: The first line is 2, so T is 2, and there are 2 test cases.
In the first test case, The Zorons will initially be at 9 and then they will leap to 14,19 24.....  The Nova Corps can take leaps of 12 and will catch them nearest at a distance 24, taking 2 leaps 12 and 24.
In the second test case, The Zorons will initially be at 5 and then they will leap to 12,19 26, 33, 40, 47, 54.....  The Nova Corps can take leaps of 9 and will catch them nearest at 54, taking 6 leaps.
Hence the output has 2 lines, 2 and 6.

Example 2

Input: 1 10 15 20
Output: 2
Explanation: The first line is 1, so T is 1, and there is 1 test case.
The Zorons will initially be at 10, and jump in jumps of 15, landing at 25,40 
The Nova Corps take leaps of 20, and arrive at 20, 40. Hence, they can meet at 40 after 2 leaps. The output is 2.

Note:
The solution is so simple but it seems little complicated because of the condition: If it is impossible to catch return -1.

Program


#include <stdio.h>
int main() {
int i,d,z,s,l,k,c=0,j,t;
scanf("%d",&t);
for(j=0;j<t;j++)
{
scanf("%d",&i);
scanf("%d",&d);
scanf("%d",&z);
c=0;
s=1;
while(s!=0)
{
    i=i+d;
    for(k=2;k<=z;k++)
    {
        if(((i%k)==0)&&((z%k)==0))
        ++c;
    }
        if(c==0)
        {
        printf("-1 ");
        break;
        }
    
    s=i%z;
    if(s==0)
    {
        l=i/z;
        printf("%d ",l);
    }
    l=0;
}
}
return 0;
}

Output

example 1:  2 9 5 12 5 7 9

                    2 6

example 2:  1 10 15 20

                    2

example 3: 2 1 2 4 10 15 29

                    -1  -1

You can also run it on a online IDE: https://ide.geeksforgeeks.org/uwt0OABm8i

Your feedback are always welcome ! If you have and doubt you can contact or leave a comment!! Cheers!!!

Related Links: Milk man and His Bottles
                          Bride Hunting 2018


Milk Man and His Bottles- Code Vita 2015 | round 1

               Milk Man and His Bottles

Problem

A Milkman serves milk in packaged bottles of varied sizes. The possible size of the bottles are {1, 5, 7 and 10} litres. He wants to supply desired quantity using as less bottles as possible irrespective of the size. Your objective is to help him find the minimum number of bottles required to supply the given demand of milk.

Input Format: 

First line contains number of test cases N Next N lines, each contain a positive integer Liwhich corresponds to the demand of milk. 

Output Format:

 For each input Li, print the minimum number of bottles required to fulfill the demand 

Constraints: 

1 <= N <= 1000 Li > 0 1 <= i <= N 

Sample Input and Output

SNo.
Input
Output
12
17
 65
2
7
  
Explanation:
Number of test cases is 2
For 17 = 10*1 + 7*1 = 2
For 65 = 10*6 + 5*1 = 7

Few more examples:
For 99 = 10*9 + 7*1 + 1*2 = 12
For 63 = 10*6 + 1*3 =9

Program:

#include <stdio.h>
int main()
{
int n,b=0,i,m,s=0;
scanf("%d",&m);
for( i=0;i<m;i++)
{
scanf("%d",&n);
b=n/10;
n=n%10;
s=s+b;
b=0;
b=n/7;
n=n%7;
s=s+b;
b=0;
b=n/5;
n=n%5;
s=s+b;
b=0;
b=n/1;
s=s+b;
printf("%d\n",s);
s=0;
b=0;
}
return 0;
}

Output:

2
17
65

2
7

You can also run it on a online 

Your feedback are always welcome! If you have any doubt you can contact me or leave a comment!! Cheers!!!


Related Links:Minimum product array

Super Market Problem | TCS Code Vita 2023 - Zone 1 | Super Market TCS Code Vita 2023 Solution | Code Vita 2023 | Code Vita 2023 season 11 solution

 Problem Description: In a Super market we will find many variations of the same product. In the same way we can find many types of rice bag...