Solutions: CsCode Programming Contest 3

Check the results of CsCode Programming Contest 3, click here.

Contest pattern: 2 Programming Questions and 5 MCQ’s.
Contest was organised by @Computer_Science_Engineering .


Answers of MCQ questions

1)

What will be the output of above C program?

Choices

  • 123
  • 1
  • 321123 Correct answer
  • 32123

2)

Above code defines which concept?

Choices

  • Iteration
  • Simple function call
  • Recursion Correct answer
  • Conditional Statement


3)

What is the time complexity of code below?

Choices

  • O(n)
  • O(200)
  • O(n-200)
  • O(1) Correct answer

Check this post for explanation


4)

Tailed recursive functions are slower than non-tailed recursive functions.

Above statement is correct or incorrect?

Choices

  • Correct
  • Incorrect Correct answer

Check following post for explanation.


5)

Choose the correct output

Choices

  • Error Correct answer
  • 4
  • 3
  • 2

Hint:


Solutions of Programming Questions 

1) Perfect Number

Problem statement

Write a program to check whether the given number is a perfect number or not. The program should print 1 if the number is a perfect number, else it should print 0.

Hint: Perfect number is a positive whole number that is equal to the sum of its proper divisors.
The first perfect number is 6 as the sum of its proper positive divisors, 1,2 and 3 is 6. Other perfect numbers are 28, 496 and so on.

Input Format:

First line of input contains T test cases.

For each test case,

a positive integer on new line

Output:

Display 1 if number is perfect else 0 for each numbes on new line.

Constraints:

1 <= T <= 1000
1<= Number <= 100000

Solution:

def check_perfect_number(number):
    if number == 1:
        return False
    sum_ = 1
    for i in range(2, number//2+2):
        if number%i == 0:
            sum_ += i
    if sum_ == number:
        return True
    return False


for _ in range(int(input())):
    number = int(input())
    if check_perfect_number(number):
        print(1)
    else:
        print(0)
def isPerfect(n):
    s = 1
    i = 2
    while i*i <= n:
        if(n % i ==0):
            if n//i == i:
                s = s+i
            else: 
                s = s + i + n//i
        i += 1
    return (1 if s == n and n!=1 else 0)

for i in range(int(input())):
    n = int(input())
    if isPerfect(n):
        print(1)
    else:
        print(0)
// By kamesh upmanyu

#include<bits/stdc++.h>
using namespace std;
bool check(int n)
{ if(n==1||n==0)
   return 0;
   int res=0;
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            if(i==(n/i))
            res+=i;
            else
            res+=(i+(n/i));
        }
    }
    if(res+1==n)
    return 1;
    return 0;
}
int main()
{
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
       cout<<check(n)<<"\n";
    }
}

2) Special Sequence – Count Numbers

Problem statement

The following sequence is formed using words and numbers:

  • First number is 1
  • In the first number, there was one 1 so the second number is 11.
  • In the second number, there was two 1s, so the third number is 21
  • Like that the fourth number is 1211 (one 2 and one 1)
  • The next number is 111221 (one 1, one 2, two 1’s).

This sequence can continue infinitely. Given an integer, q[i], determine the sum of digits of the value in the sequence at that position. For example, position 4 contains the value 1211. The sum of those digits is 1+2+1+1 = 5.

Constraints:

1 <= n <= 1000
1 <= q[i]  <= 54

Input Format:

The first line contains an integer n (total number of queries).

Next n lines contains an integer q[i].

Output Format:

n  lines denoting sum of digits of sequence at q[i]

Check the sample test case solution for more information about output.

Sample Input:

2
2
4

Sample Output:

2
5

Explanation:

The sequence is 1, 11, 21, 1211, 111221 and so on.

The sum of digits of element at 2nd(11) and 4th(1211) position in the sequence are 2, 5.

Solution:

sumOfDigits = [0 for _ in range(56)]
sumOfDigits[1] = 1

firstNumber = '11'

for i in range(1, 55):
    sum_ = 0
    for no in firstNumber:
        sum_ += int(no)
    sumOfDigits[i+1] = sum_ 

    nextNumber = ''

    j=1

    count = 1
    for j in range(1, len(firstNumber)):
        if firstNumber[j] == firstNumber[j-1]:
            count += 1
        else:
            nextNumber += str(count)+firstNumber[j-1]
            count = 1
    nextNumber += str(count)+firstNumber[-1]

    firstNumber = nextNumber
    
#input 
for _ in range(int(input())):
    print(sumOfDigits[int(input())])
//By kamesh upmanyu

#include<bits/stdc++.h>
using namespace std;
string v[55];;
void create()
{
 
    v[1]=to_string(1);
  
    for(int i=2;i<=54;i++)
    {   
        string str=v[i-1];
        string res="";
        for(int j=0;j<str.length();j++)
        {
           int c=1;
            while(str[j]==str[j+1])
             { c++;j++;}
              res+=to_string(c)+str[j];
        }
        v[i]=res;
    }
    
}
int main()
{    create();
    int t,n;
    cin>>t;
    while(t--){
        int s=0;
        cin>>n;
        string str=v[n];
        for(int i=0;i<str.length();i++)
        {
            s+=str[i]-'0';
        }
        cout<<s<<"\n";
    }
    
}

If you have any doubts, ask us on Instagram or comment below.


CsCode

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top