TCS Coding Question 2 | Given a maximum of four digit to the base 17 (10 – A …

Sweet Seventeen Problem Statement

Given a maximum of four digit to the base 17 (10 – A, 11 – B, 12 – C, 13 – D … 16 – G} as input, output its decimal value.

Test Cases

Case 1

  • Input – 1A
  • Expected Output – 27

Case 2

  • Input – 23GF
  • Expected Output – 10980
Given a maximum of four digit to the base 17
#include <stdio.h>
#include <math.h>
#include <string.h>

int main(){

  char hex[17];
  long long decimal, place;

  int i = 0, val, len;
  decimal = 0;
  place = 1;

  scanf("%s",hex);

  len = strlen(hex);
  len--;

  for(i = 0;hex[i]!='\0';i++)
  {
    if(hex[i]>='0'&& hex[i]<='9'){

      //48 to 57 are ascii values of 0 - 9
      //say value is 8 its ascii will be 56
      //val = hex[i] - 48 => 56 - 48 => val = 8

      val = hex[i] - 48;
    }
    else if(hex[i]>='a'&& hex[i]<='g'){

      //97 to 103 are ascii values of a - g
      //say value is g its ascii will be 103
      //val = hex[i] - 97 + 10 => 103 - 97 + 10=> val = 16
      //10 is added as g value is 16 not 6 or a value is 10 not 0

      val = hex[i] - 97 + 10;
    }
    else if(hex[i]>='A'&& hex[i]<='G'){

      //similarly, 65 to 71 are values of A - G
      val = hex[i] - 65 + 10;
    }

    decimal = decimal + val * pow(17,len);
    len--;
  }

  printf("%lld",decimal);

  return 0;
}
#include <iostream>
#include <math.h>
#include <string.h>

using namespace std;
int main(){

  char hex[17];
  long long decimal, place;

  int i = 0, val, len;
  decimal = 0;
  place = 1;

  cin>> hex;

  len = strlen(hex);
  len--;

  for(i = 0;hex[i]!='\0';i++)
  {
    if(hex[i]>='0'&& hex[i]<='9'){

      //48 to 57 are ascii values of 0 - 9
      //say value is 8 its ascii will be 56
      //val = hex[i] - 48 => 56 - 48 => val = 8

      val = hex[i] - 48;
    }
    else if(hex[i]>='a'&& hex[i]<='g'){

      //97 to 103 are ascii values of a - g
      //say value is g its ascii will be 103
      //val = hex[i] - 97 + 10 => 103 - 97 + 10=> val = 16
      //10 is added as g value is 16 not 6 or a value is 10 not 0

      val = hex[i] - 97 + 10;
    }
    else if(hex[i]>='A'&& hex[i]<='G'){

      //similarly, 65 to 71 are values of A - G
      val = hex[i] - 65 + 10;
    }

    decimal = decimal + val * pow(17,len);
    len--;
  }

  cout<< decimal;

  return 0;
}
'''The int() function converts the specified value into an integer number.
We are using the same int() method to convert the given input.
int() accepts two arguments, number and base.
Base is optional and the default value is 10.
In the following program we are converting to base 17'''

num = str(input())
print(int(num,17))
import java.util.*;
public class Main
{
	public static void main(String[] args) {
		HashMap<Character,Integer> hmap = new HashMap<Character,Integer>();
		hmap.put('A',10);
		hmap.put('B',11);
		hmap.put('C',12);
		hmap.put('D',13);
		hmap.put('E',14);
		hmap.put('F',15);
		hmap.put('G',16);
		hmap.put('a',10);
		hmap.put('b',11);
		hmap.put('c',12);
		hmap.put('d',13);
		hmap.put('e',14);
		hmap.put('f',15);
		hmap.put('g',16);
		Scanner sin = new Scanner(System.in);
		
                String s = sin.nextLine();
		long  num=0;
		int k=0;
		
                for(int i=s.length()-1;i>=0;i--)
		{
		    if((s.charAt(i)>='A'&&s.charAt(i)<='Z')||(s.charAt(i)>='a' &&s.charAt(i)<='z'))
		       {
		           num = num + hmap.get(s.charAt(i))*(int)Math.pow(17,k++);
		       }
		    else
		       {
		        num = num+((s.charAt(i)-'0')*(int)Math.pow(17,k++));
		}
		}
		System.out.println(num);
	}
}

5 comments on “TCS Coding Question 2 | Given a maximum of four digit to the base 17 (10 – A …”


  • Harry

    import java.io.*;
    class A{
    public static void main(String args[])throws Exception{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String s=br.readLine();
    System.out.println(Integer.parseInt(s,17));
    }
    }
    This much code is enough for this question.


  • Adesh

    #include

    using namespace std;

    int main() {
    string s; cin>>s;
    int l = s.size(); int tl=l;
    //cout<<l<<endl;
    int num=0;
    for(int i=0; i<tl; i++){

    if(s[i]=='0' || s[i]=='1' || s[i]=='2' || s[i]=='3' || s[i]=='4' || s[i]=='5' || s[i]=='6' || s[i]=='7' || s[i]=='8' || s[i]=='9'){
    num = num + ((int)s[i]-48)*pow(17,l-1) ;

    }
    else{
    char ts = s[i]; int p=0;
    if(ts=='A') p=10;
    else if(ts=='B') p=11;
    else if(ts=='C') p=12;
    else if(ts=='D') p=13;
    else if(ts=='E') p=14;
    else if(ts=='F') p=15;
    else if(ts=='G') p=16;

    num=num+p*pow(17,l-1);
    }
    l–;
    }
    cout<<num;
    }


  • Himanshu

    class Question2 {
    public static void main(String[] args) {
    String number = “1G”; // Number
    System.out.println(Integer.valueOf(number, 17)); //17 is base
    }
    }


  • Amrutha

    #include
    #include
    #include
    int main()
    {
    int l,t,val,d=0,n=0,i;
    char s[32];
    scanf(“%s”,s);
    l=strlen(s)-1;
    for(i=l;i>=0;i–)
    {
    t=s[i];
    if(t>=48&&t=97&&t=65&&t<=90)
    {
    val=t-55;
    }
    d=d+val*pow(17,n);
    n++;
    }
    printf("%d",d);
    }


  • RAUSHAN

    for(int i=s.length()-1;i>=0;i–)
    {
    if((s.charAt(i)>=’A’&&s.charAt(i)=’a’ &&s.charAt(i)<='z'))
    {
    num = num + hmap.get(s.charAt(i))*(int)Math.pow(17,k++);
    }
    else
    {
    num = num+((s.charAt(i)-'0')*(int)Math.pow(17,k++));
    }
    can any one explian how is it working