string T[10]={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
string H[10]={"","Ten","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};
string K[10]={"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
string Hundred="Hundred",Thousand="Thousand",Million="Million",billion="Billion";
class Solution {
public:
string getWords(int num)
{
string tmp="";
if(num/100)
{
tmp=T[num/100]+" "+Hundred;
num%=100;
}
if(num/10)
{
if(num>=10&&num<=19)
{
if(tmp!="")
return tmp+" "+K[num%10];
return K[num%10];
}
if(tmp!="")
tmp=tmp+" "+H[num/10];
else
tmp=H[num/10];
num%=10;
}
if(num)
{
if(tmp!="")
tmp=tmp+" "+T[num];
else
tmp=T[num];
}
return tmp;
}
string numberToWords(int num) {
int cnt=0;
string str="";
if(num==0)
return T[0];
while(num)
{
int tmp=num%1000;
num/=1000;
string ans;
if(tmp)
{
ans=getWords(tmp);
if(cnt==1)
ans=ans+" "+Thousand;
else if(cnt==2)
ans=ans+" "+Million;
else if(cnt==3)
ans=ans+" "+billion;
if(str=="")
str=ans;
else
str=ans+" "+str;
}
cnt++;
}
return str;
}
};