#include<iOStream>
class expand
{
public:
expand(unsigned long long num):value(num){}
std::ostream& operator()(std::ostream& out)const;
private:
unsigned long long value;
static const char * const units[20];
static const char * const tens[10];
};
const char * const expand::units[20] = {"zero", "one", "two", "three","four","five","six","seven",
"eight","nine", "ten", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen"};
const char * const expand::tens[10] = {"", "ten", "twenty", "thirty","forty","fifty","sixty","seventy",
"eighty","ninety"};
std::ostream &operator<< (std::ostream &out, expand number)
{
return(number(out));
}
std::ostream &expand::operator()(std::ostream &out) const
{
const unsigned long long quintillion=1000000000000000000;
const unsigned long long quadrillion=1000000000000000;
const unsigned long long trillion=1000000000000;
const unsigned long long billion=1000000000;
const unsigned long long million=1000000;
const unsigned long long thousand=1000;
const unsigned long long hundred=100;
const unsigned long long twenty=20;
const unsigned long long ten=10;
unsigned long long multiple=quintillion;
unsigned long long remain;
if(value>=thousand)
{
while(multiple>value&&(multiple!=quintillionmultiple!=quadrillion
multiple!=trillionmultiple!=billionmultiple!=millionmultiple!=thousand))
multiple/=1000;
out<<expand(value/multiple);
switch(multiple)
{
case(quintillion):out<<"-quintillion"; break;
case(quadrillion):out<<"-quadrillion"; break;
case(trillion):out<<"-trillion"; break;
case(billion):out<<"-billion"; break;
case(million):out<<"-million";break;
case(thousand):out<<"-thousand";break;
}
if(remain=value%multiple)
{
if(remain<hundred)
out<<"-and";
out<<"-"<<expand(remain);
}
}
else if(value>=hundred)
{
out<<expand(value/hundred)<<"-hundred";
if(remain=value%hundred)
out<<"-and-"<<expand(remain);
}
else if(value>=twenty)
{
out<<tens[value/ten];
if(remain=value%ten)
out<<"-"<<expand(remain);
}
else
out<<units[value];
return(out);
}
int main()
{
for(unsigned long long ull=10000000; ull<100000000; ++ull)
std::cout<<expand(ull)<<std::endl;
return(0);
}
Copyright © 2026 eLLeNow.com All Rights Reserved.