fork(1) download
  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. string intToWord(unsigned long long x)
  6. {
  7. string ones[] = {"",
  8. "jeden",
  9. "dwa",
  10. "trzy",
  11. "cztery",
  12. "piec",
  13. "szesc",
  14. "siedem",
  15. "osiem",
  16. "dziewiec",
  17. "dziwsiec",
  18. "jedenascie",
  19. "dwanascie",
  20. "trzynascie",
  21. "czternascie",
  22. "pietnascie",
  23. "szesnascie",
  24. "siedemnascie",
  25. "osiemnascie",
  26. "dziewietnascie"
  27. };
  28.  
  29. string decads[] = { " ",
  30. "",
  31. "dwadziescia",
  32. "trzydziesci",
  33. "czterdziescie",
  34. "piecdziesiat",
  35. "szescdziesiat",
  36. "siedemdziesiat",
  37. "osoemdziesiat",
  38. "dziewiecdziesiant",
  39. };
  40.  
  41. string hundreds[] = {"",
  42. "sto",
  43. "dwiescie",
  44. "trzysta",
  45. "czterysta",
  46. "piecset",
  47. "szescset",
  48. "siedemset",
  49. "osiemset",
  50. "dziewiecset"
  51. };
  52.  
  53. unsigned long long pierwsza;
  54. string tys = " tys. ";
  55. string mln = " mln. ";
  56. string mld = " mld ";
  57. string bln = " bln ";
  58.  
  59. if (x == 1000000000000 )
  60. {
  61.  
  62. pierwsza = x / 1000000000000;
  63. return intToWord(pierwsza) + bln + intToWord(x - pierwsza * 1000000000000);
  64. }
  65. if (x >= 1000000000 && x < 1000000000000)
  66. {
  67.  
  68. pierwsza = x / 1000000000;
  69. return intToWord(pierwsza) + mld + intToWord(x - pierwsza * 1000000000);
  70. }
  71.  
  72. else if (x >= 1000000 && x < 1000000000)
  73. {
  74.  
  75. pierwsza = x / 1000000;
  76. return intToWord(pierwsza) + mln + intToWord(x - pierwsza * 1000000);
  77. }
  78. else if (x >= 1000 && x < 1000000)
  79. {
  80.  
  81.  
  82. pierwsza = x / 1000;
  83. return intToWord(pierwsza) + tys + intToWord(x - pierwsza * 1000);
  84. }
  85. else if (x >= 100 && x < 1000)
  86. {
  87.  
  88.  
  89. pierwsza = x / 100;
  90.  
  91.  
  92. return hundreds[pierwsza] + " " + intToWord(x - pierwsza * 100);
  93.  
  94. }
  95. else if (x >= 20 && x < 100)
  96. {
  97. int left, right;
  98.  
  99. left = x / 10;
  100. right = x % 10;
  101.  
  102. return decads[left] + " " + ones[right];
  103.  
  104. }
  105. else if (x >= 0 && x < 20)
  106. {
  107. return ones[x];
  108. }
  109.  
  110.  
  111. }
  112.  
  113. int main()
  114. {
  115. unsigned long long num;
  116. while (cin >> num)
  117. {
  118.  
  119.  
  120. cout << intToWord(num) << endl;
  121.  
  122. }
  123.  
  124.  
  125. return 0;
  126. }
Success #stdin #stdout 0.01s 5392KB
stdin
123
123123
12412124
123234324
stdout
sto dwadziescia trzy
sto dwadziescia trzy tys. sto dwadziescia trzy
dwanascie mln. czterysta dwanascie tys. sto dwadziescia cztery
sto dwadziescia trzy mln. dwiescie trzydziesci cztery tys. trzysta dwadziescia cztery