#include string smalls[] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; string tens[] = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninty" }; // this version is guaranteed correct for any number < 1000000 // correct for X means it will say the number X corectly in words void say_number(int N) { if (N < 20) print(smalls[N]); else if (N < 100) { const int part1 = N / 10; const int part2 = N % 10; print(tens[part1]); if (part2 != 0) { print(" "); say_number(part2); } } else if (N < 1000) { const int part1 = N / 100; const int part2 = N % 100; say_number(part1); print(" hundred"); if (part2 != 0) { print(" and "); say_number(part2); } } else if (N < 1000000) { const int part1 = N / 1000; const int part2 = N % 1000; say_number(part1); print(" thousand"); if (part2 != 0) { print(" "); say_number(part2); } } else { print("I don't know how to say "); print(N); print(" yet"); } } int main() { const int number = read_int(); say_number(number); new_line(); }