fork(2) download
  1. #include <iostream>
  2. #include <string>
  3. #include <unordered_map>
  4. using namespace std;
  5. string to_words(unsigned long long value) {
  6. static unordered_map<unsigned long long, const char *> number_to_words = {
  7. {0, "zero" }, {1, "jeden" }, {2, "dwa"}, {3, "trzy"}, {4, "cztery"}, {5, "piec"},
  8. {6, "szesc"}, {7, "siedem"}, {8, "osiem"}, {9, "dziewiec"}, {10, "dziesiec"},
  9. {11, "jedenascie"}, {12, "dwanascie"}, {13, "trzynascie"}, {14, "czternascie"},
  10. {15, "pietnascie"}, {16, "szesnascie"}, {17, "siedemnascie"}, {18, "osiemnascie"},
  11. {19, "dziewietnascie"}, {20, "dwadziescia"}, {30, "trzydziesci"}, {40, "czterdziesci"},
  12. {50, "piecdziesiat"}, {60, "szescdziesiat"}, {70, "siedemdziesiat"}, {80, "osiemdziesiat"},
  13. {90, "dziewiecdziesiat"}, {100, "sto"}, {200, "dwiescie"}, {300, "trzysta"}, {400, "czterysta"},
  14. {500, "piecset"}, {600, "szescset"}, {700, "siedemset"}, {800, "osiemset"}, {900, "dziewiecset"}
  15. };
  16. auto it = number_to_words.find(value);
  17. if (it != number_to_words.end())
  18. {
  19. return it->second;
  20. } if (((value) > 20) && (value < 100))
  21. {
  22. return to_words(value / 10 * 10) + " " + to_words(value % 10);
  23. } if ((value > 100) && (value < 1000))
  24. {
  25. return to_words(value / 100 * 100) + " " + to_words(value % 100);
  26. }
  27. return "Error";
  28. }
  29.  
  30. int main() {
  31. int t;
  32. cin >> t;
  33. while (t)
  34. {
  35. unsigned long long n;
  36. cin >> n;
  37. int counter = 0;
  38. string slowo = "";
  39. while (n > 0)
  40. {
  41. int x = n % 10;
  42. n /= 10;
  43. counter++;
  44. if (n > 0)
  45. {
  46. x = x + (n%10) * 10;
  47. n /= 10;
  48. counter++;
  49. }
  50. if (n > 0)
  51. {
  52. x = x + (n%10) * 100;
  53. n /= 10;
  54. counter++;
  55. }
  56. if (counter > 3 && counter < 7)
  57. slowo.insert(0, " tys. ");
  58. if(counter > 6 && counter < 10)
  59. slowo.insert(0, " mln. ");
  60. if(counter > 9 && counter < 13)
  61. slowo.insert(0, " mld. ");
  62. if(counter > 12 && counter < 16)
  63. slowo.insert(0, " bln. ");
  64. slowo.insert(0, to_words(x));
  65. }
  66. cout << slowo;
  67. t--;
  68. }
  69. }
Success #stdin #stdout 0s 5592KB
stdin
1
88881510
stdout
osiemdziesiat osiem mln. osiemset osiemdziesiat jeden tys. piecset dziesiec