- #include <iostream> 
- #include <cmath> 
- using namespace std; 
-   
- void number (long long n) { 
- 	if(abs(n) < 1000){// сотни, десятки, единицы 
- 		if(n < 0) {  
- 			cout << "minus "; 
- 			n = abs(n); 
- 			number(n); 
- 		}  
- 		else if(n == 0) cout << "zero"; 
- 		else {// натуральные числа 
- 			int safe = n;// сохраняем значение числа, так как дальше его изменяем, 
- 			if((n / 100) != 0) {// если есть сотни 
- 				n = n / 100; 
- 			} 
- 			switch(n){ 
- 				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;  
- 			} 
- 			if(((safe / 100) == 0) && ((safe % 100) / 10 == 0)){ 
- 				n = -1e90;// чтобы не продолжать выводить нули 
- 			} 
- 			if((safe / 100) > 0) { 
- 				cout << "hundred "; 
- 				n = safe % 100; 
- 				safe = 0; 
- 				if(n > 0){ 
- 				cout << "and "; 
- 				} 
- 			} 
- 			if((n / 10) == 0){ 
- 				number(n); 
- 			} else if((n / 10) == 1) { 
- 				switch(n) { 
- 					case 10: cout << "ten "; break; 
- 					case 11: cout << "eleven "; break; 
- 					case 12: cout << "twelve "; break; 
- 					case 13: cout << "thirteen "; break; 
- 					case 14: cout << "fourteen "; break; 
- 					case 15: cout << "fifteen "; break; 
- 					case 16: cout << "sixteen "; break; 
- 					case 17: cout << "seventeen "; break; 
- 					case 18: cout << "eighteen "; break; 
- 					case 19: cout << "nineteen "; break; 
- 				} 
- 			} else if((n / 10) > 1) { 
- 				switch(n / 10) { 
- 					case 2: cout << "twenty"; break;  
- 					case 3: cout << "thirty"; break;  
- 					case 4: cout << "forty"; break;  
- 					case 5: cout << "fifty"; break; 
- 					case 6: cout << "sixty"; break;  
- 					case 7: cout << "seventy"; break;  
- 					case 8: cout << "eighty"; break;  
- 					case 9: cout << "ninety"; break; 
- 				} 
- 				n = n % 10; 
- 				if(n != 0){ 
- 					cout << "-"; 
- 					number(n); 
- 				} 
- 			}  
- 		} 
- 	} else {// выводим тысячи, миллионы, миллиарды и т.д.	 
- 		if(n >= 1e15) { 
- 			number(n / 1e15); 
- 			cout << "billiard "; 
- 			n %= (long long) 1e15; 
- 			if(n != 0) number(n); 
- 		} else if(n >= 1e12) { 
- 			number(n / 1e12); 
- 			cout << "billion "; 
- 			n %= (long long) 1e12; 
- 			if(n != 0) number(n); 
- 		} else if(n >= 1e9) { 
- 			number(n / 1e9); 
- 			cout << "milliard "; 
- 			n %= (int) 1e9; 
- 			if(n != 0) number(n); 
- 		} else if(n >= 1e6) { 
- 			number(n / 1e6); 
- 			cout << "million "; 
- 			n %= (int) 1e6; 
- 			if(n != 0) number(n); 
- 		} else if(n >= 1e3) { 
- 			number(n / 1e3); 
- 			cout << "thousand "; 
- 			n %= (int) 1e3; 
- 			if(n != 0) number(n);// чтоб не выводить ноль после тысяч 
- 		} 
- 	} 
- } 
-   
-   
-   
- int main() { 
- 	long long n; 
- 	cin >> n; 
- 	number(n); 
- 	return 0; 
- }