FactSet Research Systems, Inc Interview Question
Software Engineer / DevelopersCountry: India
Interview Type: Written Test
#include<stdio.h>
char str[100][100]={"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
char s[20][20]={"ELEVEN","TWELEVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN",
"SEVENTEEN","EIGHTEEN","NINTEEN"};
char ss[10][10]={"TEN","TWENTY","THIRTY","FOURTY","FIFTY","SIXTY","SEVENTY","EIGHTY",
"NINTY"};
int unit(int num) {
num?printf("%s ",str[num-1]):printf("ZERO ");
}
int tens(int num) {
(num>10&&num<20)?printf("%s ",s[num-11]):(printf("%s ",ss[num/10-1])
&&((num%10)?unit(num%10):1));
}
int hundreds(int num) {
(num/100)?(unit(num/100)&&printf("HUNDRED AND ")):1;
(num%100)?tens(num%100):1;
}
int thousand(int num) {
(num/1000)?(unit(num/1000)&&printf("THOUSAND ")):1;
(num%1000)?hundreds(num%1000):1;
}
int ten_thousand(int num) {
(num/1000)?(tens(num/1000)&&printf("THOUSAND ")):1;
(num%1000)?hundreds(num%1000):1;
}
int lak(int num) {
(num/100000)?(tens(num/10000)&&printf("LAKHS ")):1;
(num%100000)?ten_thousand(num%100000):1;
}
int ten_lak(int num) {
(num/100000)?(tens(num/100000)&&printf("LAKHS ")):1;
(num%100000)?ten_thousand(num%100000):1;
}
int crore(int num) {
(num/10000000)?(tens(num/10000000)&&printf("CRORE ")):1;
(num%1000000)?ten_lak(num%10000000):1;
}
int ten_crore(int num) {
(num/10000000)?(tens(num/10000000)&&printf("CRORE ")):1;
(num%10000000)?ten_lak(num%10000000):1;
}
int main()
{
long int num;
int n,r,c=0;
printf("Enter the number:\n");
scanf("%ld",&num);
n=num;
while(n) {
r=n%10;
n=n/10;
c++;
}
switch(c) {
case 1:unit(num);break;
case 2:tens(num);break;
case 3:hundreds(num);break;
case 4:thousand(num);break;
case 5:ten_thousand(num);break;
case 6:lak(num);break;
case 7:ten_lak(num);break;
case 8:crore(num);break;
case 9:ten_crore(num);break;
}
printf("\n");
return 0;
}
a c++ solution
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
unordered_map<int,string> num2word_lookup({
{0,""},
{1,"one"},
{2,"two"},
{3,"three"},
{4,"four"},
{5,"five"},
{6,"six"},
{7,"seven"},
{8,"eight"},
{9,"nine"},
{10,"ten"},
{11,"eleven"},
{12,"twelve"},
{13,"thirteen"},
{14,"fourteen"},
{15,"fifteen"},
{16,"sixteen"},
{17,"seventeen"},
{18,"eighteen"},
{19,"ninteen"},
{20,"twenty"},
{30,"thirty"},
{40,"forty"},
{50,"fifity"},
{60,"sixty"},
{70,"seventy"},
{80,"eighty"},
{90,"ninty"},
{100,"hundred"},
{1000,"thousand"},
{1000000,"million"},
{1000000000,"billion"},
{1000000000000,"trilion"}});
string speak3Digit(int n){
string re = "";
int n1=n%10, n2=(n/10)%10, n3=n/100;
if(n2==1)
re=num2word_lookup[n2*10+n1];
else{
re=num2word_lookup[n1];
if(n2!=0)
re=num2word_lookup[n2*10]+" "+re;
}
if(n3)
re=num2word_lookup[n3]+" hundred "+re;
return re;
}
string speakNum(int n){
if(n==0)
return "zero";
string re = "";
bool sign = n>0?true:false;
unsigned int cnt=1,abs_n=n>0?n:-n;
while(abs_n){
re=speak3Digit(abs_n%1000)+(cnt==1?" "+re:" "+num2word_lookup[cnt]+" "+re);
cnt*=1000;
abs_n/=1000;
}
return sign?re:"negative "+re;
}
int main(){
cout<<"0 is "+speakNum(0)<<endl;
cout<<"10234090 is "+speakNum(10234090)<<endl;
return 0;
}
#include<iostream.h>
#include<string.h>
void return_power(int i);
void return_number2(int i)
{
//cout << " return_number2 " ;
switch(i)
{
case 0 :
break;
case 1 :
cout << " ONE ";
break;
case 2 :
cout << " TWO ";
break;
case 3 :
cout << " THREE ";
break;
case 4 :
cout << " FOUR ";
break;
case 5 :
cout << " FIVE ";
break;
case 6 :
cout << " SIX ";
break;
case 7 :
cout << " SEVEN ";
break;
case 8 :
cout << " EIGHT ";
break;
case 9 :
cout << " NINE ";
break;
}
}
void return_number(int i)
{
//cout << " return_number " ;
int ii=0,j=0;
ii=i/10;
if(i>=100)
{
return_power(i);
}
else
{
switch(ii)
{
case 0 :
//cout << " ZERO ";
return_number2(i%10);
break;
case 1 :
//cout << " ONE ";
j=i%10;
switch(j)
{
case 0 :
cout << " TEN ";
break;
case 1 :
cout << " ELEVEN ";
break;
case 2 :
cout << " TWELVE ";
break;
case 3 :
cout << " THIRTEEN ";
break;
case 4 :
cout << " FOURTEEN ";
break;
case 5 :
cout << " FIFTEEN ";
break;
case 6 :
cout << " SIXTEEN ";
break;
case 7 :
cout << " SEVENTEEN ";
break;
case 8 :
cout << " EIGHTEEN ";
break;
case 9 :
cout << " NINETEEN ";
break;
}
//return_number2(i%10);
break;
case 2 :
cout << " TWENTY ";
return_number2(i%10);
break;
case 3 :
cout << " THIRTY ";
return_number2(i%10);
break;
case 4 :
cout << " FOURTY ";
return_number2(i%10);
break;
case 5 :
cout << " FIFTY ";
return_number2(i%10);
break;
case 6 :
cout << " SIXTY ";
return_number2(i%10);
break;
case 7 :
cout << " SEVENTY ";
return_number2(i%10);
break;
case 8 :
cout << " EIGHTY ";
return_number2(i%10);
break;
case 9 :
cout << " NINETY ";
return_number2(i%10);
break;
}
}
//cout << " NUMBER " ;
}
void return_power(int i)
{
//cout << " return_power " ;
if((i/10000000))
{
return_number(i/10000000);
cout << " Crores ";
}
i=i%10000000;
if((i/100000))
{
return_number(i/100000);
cout << " Lakhs ";
}
i=i%100000;
if((i/1000))
{
return_number(i/1000);
cout << " Thousand ";
}
i=i%1000;
if((i/100))
{
return_number(i/100);
cout << "Hundred ";
}
i=i%100;
if((i%100))
{
return_number(i);
}
}
int main()
{
//cout << " main " ;
int i=0;
cout << " Enter number : " << endl;
cin >> i;
return_power(i);
return 0;
}
}
- shah.naiya8291 November 26, 2014