fork(2) download
  1. <?php
  2.  
  3. function smallNumbers($number, $isFemale) {
  4. $spelling = array(
  5. 0 => 'ноль ', 10 => 'десять ', 100 => 'сто ',
  6. 1 => 'один ', 11 => 'одиннадцать ', 20 => 'двадцать ', 200 => 'двести ',
  7. 2 => 'два ', 12 => 'двенадцать ', 30 => 'тридцать ', 300 => 'триста ',
  8. 3 => 'три ', 13 => 'тринадцать ', 40 => 'сорок ', 400 => 'четыреста ',
  9. 4 => 'четыре ', 14 => 'четырнадцать ', 50 => 'пятьдесят ', 500 => 'пятьсот ',
  10. 5 => 'пять ', 15 => 'пятнадцать ', 60 => 'шестьдесят ', 600 => 'шестьсот ',
  11. 6 => 'шесть ', 16 => 'шестнадцать ', 70 => 'семьдесят ', 700 => 'семьсот ',
  12. 7 => 'семь ', 17 => 'семнадцать ', 80 => 'восемьдесят ', 800 => 'восемьсот ',
  13. 8 => 'восемь ', 18 => 'восемнадцать ', 90 => 'девяносто ', 900 => 'девятьсот ',
  14. 9 => 'девять ', 19 => 'девятнадцать '
  15. );
  16.  
  17. $femaleSpelling = array(
  18. 1 => 'одна ', 2 => 'две '
  19. );
  20.  
  21. $result = '';
  22. $hundreds = 0; $tens = 0; $ones = 0;
  23.  
  24. $hundreds = (floor($number/100))*100;
  25. if ($hundreds >= 100) {
  26. $result .= $spelling[$hundreds];
  27. }
  28.  
  29. $remains = $number - $hundreds;
  30.  
  31. if ($remains == 0) {
  32. return $result;
  33. } elseif ($remains >= 20) {
  34. $tens = (floor($remains/10))*10;
  35. $result .= $spelling[$tens];
  36.  
  37. $ones = $remains - $tens;
  38. if (($ones < 3) && ($ones > 0) && ($isFemale == true)) {
  39. $result .= $femaleSpelling[$ones];
  40. } elseif ($ones > 0) {
  41. $result .= $spelling[$ones];
  42. }
  43. } elseif (($remains < 20) && ($isFemale == false)) {
  44. $result .= $spelling[$remains];
  45. } elseif (($remains < 3) && ($isFemale == true)) {
  46. $result .= $femaleSpelling[$remains];
  47. } else {
  48. $result .= $spelling[$remains];
  49. }
  50.  
  51. return $result;
  52. }
  53.  
  54. function typeEnding ($number, $power) {
  55. $typing = array(
  56. array('миллион ', 'миллионов ', 'миллиона '),
  57. array('тысяча ', 'тысяч ', 'тысячи '),
  58. array('рубль ', 'рублей ', 'рубля ')
  59. );
  60. $ending ="";
  61. $lastNumbers = $number % 10;
  62.  
  63. if ((($number%100<=20) & ($number%100>=5)) or (($lastNumbers>=5) or (($lastNumbers==0) and ($number>0)))) {
  64. $ending .= $typing[$power][1];
  65. } elseif ($lastNumbers == 1) {
  66. $ending .= $typing[$power][0];
  67. } elseif (($lastNumbers > 1) & ($lastNumbers < 5)) {
  68. $ending .= $typing[$power][2];
  69. }
  70. return $ending;
  71. }
  72.  
  73. function typeNumbers ($number) {
  74. $typeTotal ="";
  75. if ($number == 0) {
  76. $typeTotal .= "ноль рублей";
  77. return $typeTotal;
  78. }
  79.  
  80. $millions = floor($number/1000000);
  81. $typeTotal .= smallNumbers($millions, false);
  82. $typeTotal .= typeEnding($millions, 0);
  83.  
  84. $thousands = floor(($number - $millions*1000000)/1000);
  85. $typeTotal .= smallNumbers($thousands, true);
  86. $typeTotal .= typeEnding($thousands, 1);
  87.  
  88. $ones = $number % 1000;
  89. $typeTotal .= smallNumbers($ones, false);
  90. $typeTotal .= typeEnding($ones, 2);
  91.  
  92. return $typeTotal;
  93. }
  94.  
  95. function tests($n, $k) {
  96. for ($i=0,$j=1; $i < $n; $i++, $j*=$k) {
  97.  
  98. $randomTestNumber = ceil(mt_rand(0, 999999999/$j));
  99. $typedTestNumber = typeNumbers($randomTestNumber);
  100.  
  101. echo "$randomTestNumber - $typedTestNumber\n";
  102. }
  103. }
  104.  
  105. tests(300, 1.07);
Success #stdin #stdout 0.02s 20520KB
stdin
Standard input is empty
stdout
632648573 - шестьсот тридцать два миллиона шестьсот сорок восемь тысяч пятьсот семьдесят три рубля 
788828215 - семьсот восемьдесят восемь миллионов восемьсот двадцать восемь тысяч двести пятнадцать рублей 
50528391 - пятьдесят миллионов пятьсот двадцать восемь тысяч триста девяносто один рубль 
668015295 - шестьсот шестьдесят восемь миллионов пятнадцать тысяч двести девяносто пять рублей 
522522997 - пятьсот двадцать два миллиона пятьсот двадцать две тысячи девятьсот девяносто семь рублей 
501069932 - пятьсот один миллион шестьдесят девять тысяч девятьсот тридцать два рубля 
628169579 - шестьсот двадцать восемь миллионов сто шестьдесят девять тысяч пятьсот семьдесят девять рублей 
600765579 - шестьсот миллионов семьсот шестьдесят пять тысяч пятьсот семьдесят девять рублей 
127531201 - сто двадцать семь миллионов пятьсот тридцать одна тысяча двести один рубль 
151640378 - сто пятьдесят один миллион шестьсот сорок тысяч триста семьдесят восемь рублей 
15308566 - пятнадцать миллионов триста восемь тысяч пятьсот шестьдесят шесть рублей 
427330853 - четыреста двадцать семь миллионов триста тридцать тысяч восемьсот пятьдесят три рубля 
288155054 - двести восемьдесят восемь миллионов сто пятьдесят пять тысяч пятьдесят четыре рубля 
83774052 - восемьдесят три миллиона семьсот семьдесят четыре тысячи пятьдесят два рубля 
207653584 - двести семь миллионов шестьсот пятьдесят три тысячи пятьсот восемьдесят четыре рубля 
82692560 - восемьдесят два миллиона шестьсот девяносто две тысячи пятьсот шестьдесят рублей 
269415273 - двести шестьдесят девять миллионов четыреста пятнадцать тысяч двести семьдесят три рубля 
294456263 - двести девяносто четыре миллиона четыреста пятьдесят шесть тысяч двести шестьдесят три рубля 
29203927 - двадцать девять миллионов двести три тысячи девятьсот двадцать семь рублей 
42845762 - сорок два миллиона восемьсот сорок пять тысяч семьсот шестьдесят два рубля 
160082506 - сто шестьдесят миллионов восемьдесят две тысячи пятьсот шесть рублей 
7561857 - семь миллионов пятьсот шестьдесят одна тысяча восемьсот пятьдесят семь рублей 
130249876 - сто тридцать миллионов двести сорок девять тысяч восемьсот семьдесят шесть рублей 
65796085 - шестьдесят пять миллионов семьсот девяносто шесть тысяч восемьдесят пять рублей 
29232367 - двадцать девять миллионов двести тридцать две тысячи триста шестьдесят семь рублей 
83906450 - восемьдесят три миллиона девятьсот шесть тысяч четыреста пятьдесят рублей 
110678419 - сто десять миллионов шестьсот семьдесят восемь тысяч четыреста девятнадцать рублей 
25618815 - двадцать пять миллионов шестьсот восемнадцать тысяч восемьсот пятнадцать рублей 
134907523 - сто тридцать четыре миллиона девятьсот семь тысяч пятьсот двадцать три рубля 
24134716 - двадцать четыре миллиона сто тридцать четыре тысячи семьсот шестнадцать рублей 
39864674 - тридцать девять миллионов восемьсот шестьдесят четыре тысячи шестьсот семьдесят четыре рубля 
45318878 - сорок пять миллионов триста восемнадцать тысяч восемьсот семьдесят восемь рублей 
57015228 - пятьдесят семь миллионов пятнадцать тысяч двести двадцать восемь рублей 
101375901 - сто один миллион триста семьдесят пять тысяч девятьсот один рубль 
14826437 - четырнадцать миллионов восемьсот двадцать шесть тысяч четыреста тридцать семь рублей 
6286082 - шесть миллионов двести восемьдесят шесть тысяч восемьдесят два рубля 
40880964 - сорок миллионов восемьсот восемьдесят тысяч девятьсот шестьдесят четыре рубля 
42429273 - сорок два миллиона четыреста двадцать девять тысяч двести семьдесят три рубля 
27648548 - двадцать семь миллионов шестьсот сорок восемь тысяч пятьсот сорок восемь рублей 
23953979 - двадцать три миллиона девятьсот пятьдесят три тысячи девятьсот семьдесят девять рублей 
828809 - восемьсот двадцать восемь тысяч восемьсот девять рублей 
48196575 - сорок восемь миллионов сто девяносто шесть тысяч пятьсот семьдесят пять рублей 
198919 - сто девяносто восемь тысяч девятьсот девятнадцать рублей 
31044292 - тридцать один миллион сорок четыре тысячи двести девяносто два рубля 
21546445 - двадцать один миллион пятьсот сорок шесть тысяч четыреста сорок пять рублей 
45215330 - сорок пять миллионов двести пятнадцать тысяч триста тридцать рублей 
35158621 - тридцать пять миллионов сто пятьдесят восемь тысяч шестьсот двадцать один рубль 
31240618 - тридцать один миллион двести сорок тысяч шестьсот восемнадцать рублей 
24706514 - двадцать четыре миллиона семьсот шесть тысяч пятьсот четырнадцать рублей 
27623317 - двадцать семь миллионов шестьсот двадцать три тысячи триста семнадцать рублей 
25270884 - двадцать пять миллионов двести семьдесят тысяч восемьсот восемьдесят четыре рубля 
14122838 - четырнадцать миллионов сто двадцать две тысячи восемьсот тридцать восемь рублей 
2828003 - два миллиона восемьсот двадцать восемь тысяч три рубля 
25679591 - двадцать пять миллионов шестьсот семьдесят девять тысяч пятьсот девяносто один рубль 
1966468 - один миллион девятьсот шестьдесят шесть тысяч четыреста шестьдесят восемь рублей 
17612630 - семнадцать миллионов шестьсот двенадцать тысяч шестьсот тридцать рублей 
11834190 - одиннадцать миллионов восемьсот тридцать четыре тысячи сто девяносто рублей 
10410796 - десять миллионов четыреста десять тысяч семьсот девяносто шесть рублей 
3179936 - три миллиона сто семьдесят девять тысяч девятьсот тридцать шесть рублей 
6339936 - шесть миллионов триста тридцать девять тысяч девятьсот тридцать шесть рублей 
559766 - пятьсот пятьдесят девять тысяч семьсот шестьдесят шесть рублей 
15598825 - пятнадцать миллионов пятьсот девяносто восемь тысяч восемьсот двадцать пять рублей 
8327019 - восемь миллионов триста двадцать семь тысяч девятнадцать рублей 
364363 - триста шестьдесят четыре тысячи триста шестьдесят три рубля 
351944 - триста пятьдесят одна тысяча девятьсот сорок четыре рубля 
6447722 - шесть миллионов четыреста сорок семь тысяч семьсот двадцать два рубля 
1631567 - один миллион шестьсот тридцать одна тысяча пятьсот шестьдесят семь рублей 
9529017 - девять миллионов пятьсот двадцать девять тысяч семнадцать рублей 
6360647 - шесть миллионов триста шестьдесят тысяч шестьсот сорок семь рублей 
308275 - триста восемь тысяч двести семьдесят пять рублей 
7064896 - семь миллионов шестьдесят четыре тысячи восемьсот девяносто шесть рублей 
2435112 - два миллиона четыреста тридцать пять тысяч сто двенадцать рублей 
2631091 - два миллиона шестьсот тридцать одна тысяча девяносто один рубль 
2575992 - два миллиона пятьсот семьдесят пять тысяч девятьсот девяносто два рубля 
6056996 - шесть миллионов пятьдесят шесть тысяч девятьсот девяносто шесть рублей 
5508724 - пять миллионов пятьсот восемь тысяч семьсот двадцать четыре рубля 
635764 - шестьсот тридцать пять тысяч семьсот шестьдесят четыре рубля 
1058405 - один миллион пятьдесят восемь тысяч четыреста пять рублей 
3450310 - три миллиона четыреста пятьдесят тысяч триста десять рублей 
1987867 - один миллион девятьсот восемьдесят семь тысяч восемьсот шестьдесят семь рублей 
1898762 - один миллион восемьсот девяносто восемь тысяч семьсот шестьдесят два рубля 
1613884 - один миллион шестьсот тринадцать тысяч восемьсот восемьдесят четыре рубля 
206237 - двести шесть тысяч двести тридцать семь рублей 
1858813 - один миллион восемьсот пятьдесят восемь тысяч восемьсот тринадцать рублей 
2433127 - два миллиона четыреста тридцать три тысячи сто двадцать семь рублей 
2977448 - два миллиона девятьсот семьдесят семь тысяч четыреста сорок восемь рублей 
131535 - сто тридцать одна тысяча пятьсот тридцать пять рублей 
1099275 - один миллион девяносто девять тысяч двести семьдесят пять рублей 
46285 - сорок шесть тысяч двести восемьдесят пять рублей 
1463696 - один миллион четыреста шестьдесят три тысячи шестьсот девяносто шесть рублей 
919388 - девятьсот девятнадцать тысяч триста восемьдесят восемь рублей 
2060325 - два миллиона шестьдесят тысяч триста двадцать пять рублей 
357300 - триста пятьдесят семь тысяч триста рублей 
890193 - восемьсот девяносто тысяч сто девяносто три рубля 
987528 - девятьсот восемьдесят семь тысяч пятьсот двадцать восемь рублей 
1549822 - один миллион пятьсот сорок девять тысяч восемьсот двадцать два рубля 
83602 - восемьдесят три тысячи шестьсот два рубля 
137395 - сто тридцать семь тысяч триста девяносто пять рублей 
1111318 - один миллион сто одиннадцать тысяч триста восемнадцать рублей 
575128 - пятьсот семьдесят пять тысяч сто двадцать восемь рублей 
484365 - четыреста восемьдесят четыре тысячи триста шестьдесят пять рублей 
552187 - пятьсот пятьдесят две тысячи сто восемьдесят семь рублей 
554938 - пятьсот пятьдесят четыре тысячи девятьсот тридцать восемь рублей 
17437 - семнадцать тысяч четыреста тридцать семь рублей 
291900 - двести девяносто одна тысяча девятьсот рублей 
765973 - семьсот шестьдесят пять тысяч девятьсот семьдесят три рубля 
421140 - четыреста двадцать одна тысяча сто сорок рублей 
600914 - шестьсот тысяч девятьсот четырнадцать рублей 
255648 - двести пятьдесят пять тысяч шестьсот сорок восемь рублей 
19024 - девятнадцать тысяч двадцать четыре рубля 
54899 - пятьдесят четыре тысячи восемьсот девяносто девять рублей 
108056 - сто восемь тысяч пятьдесят шесть рублей 
494972 - четыреста девяносто четыре тысячи девятьсот семьдесят два рубля 
346666 - триста сорок шесть тысяч шестьсот шестьдесят шесть рублей 
300216 - триста тысяч двести шестнадцать рублей 
137513 - сто тридцать семь тысяч пятьсот тринадцать рублей 
293719 - двести девяносто три тысячи семьсот девятнадцать рублей 
71249 - семьдесят одна тысяча двести сорок девять рублей 
304241 - триста четыре тысячи двести сорок один рубль 
210574 - двести десять тысяч пятьсот семьдесят четыре рубля 
256824 - двести пятьдесят шесть тысяч восемьсот двадцать четыре рубля 
130769 - сто тридцать тысяч семьсот шестьдесят девять рублей 
203168 - двести три тысячи сто шестьдесят восемь рублей 
123418 - сто двадцать три тысячи четыреста восемнадцать рублей 
175055 - сто семьдесят пять тысяч пятьдесят пять рублей 
86788 - восемьдесят шесть тысяч семьсот восемьдесят восемь рублей 
16208 - шестнадцать тысяч двести восемь рублей 
70541 - семьдесят тысяч пятьсот сорок один рубль 
48727 - сорок восемь тысяч семьсот двадцать семь рублей 
47567 - сорок семь тысяч пятьсот шестьдесят семь рублей 
88256 - восемьдесят восемь тысяч двести пятьдесят шесть рублей 
100768 - сто тысяч семьсот шестьдесят восемь рублей 
111310 - сто одиннадцать тысяч триста десять рублей 
45499 - сорок пять тысяч четыреста девяносто девять рублей 
108937 - сто восемь тысяч девятьсот тридцать семь рублей 
54391 - пятьдесят четыре тысячи триста девяносто один рубль 
38678 - тридцать восемь тысяч шестьсот семьдесят восемь рублей 
53007 - пятьдесят три тысячи семь рублей 
68690 - шестьдесят восемь тысяч шестьсот девяносто рублей 
71832 - семьдесят одна тысяча восемьсот тридцать два рубля 
41833 - сорок одна тысяча восемьсот тридцать три рубля 
10132 - десять тысяч сто тридцать два рубля 
36701 - тридцать шесть тысяч семьсот один рубль 
44438 - сорок четыре тысячи четыреста тридцать восемь рублей 
49985 - сорок девять тысяч девятьсот восемьдесят пять рублей 
6236 - шесть тысяч двести тридцать шесть рублей 
4357 - четыре тысячи триста пятьдесят семь рублей 
36594 - тридцать шесть тысяч пятьсот девяносто четыре рубля 
37558 - тридцать семь тысяч пятьсот пятьдесят восемь рублей 
31286 - тридцать одна тысяча двести восемьдесят шесть рублей 
1540 - одна тысяча пятьсот сорок рублей 
13457 - тринадцать тысяч четыреста пятьдесят семь рублей 
19642 - девятнадцать тысяч шестьсот сорок два рубля 
30097 - тридцать тысяч девяносто семь рублей 
9458 - девять тысяч четыреста пятьдесят восемь рублей 
1510 - одна тысяча пятьсот десять рублей 
4647 - четыре тысячи шестьсот сорок семь рублей 
1359 - одна тысяча триста пятьдесят девять рублей 
16792 - шестнадцать тысяч семьсот девяносто два рубля 
2437 - две тысячи четыреста тридцать семь рублей 
2893 - две тысячи восемьсот девяносто три рубля 
17034 - семнадцать тысяч тридцать четыре рубля 
9598 - девять тысяч пятьсот девяносто восемь рублей 
5076 - пять тысяч семьдесят шесть рублей 
661 - шестьсот шестьдесят один рубль 
10370 - десять тысяч триста семьдесят рублей 
11592 - одиннадцать тысяч пятьсот девяносто два рубля 
9349 - девять тысяч триста сорок девять рублей 
2666 - две тысячи шестьсот шестьдесят шесть рублей 
4289 - четыре тысячи двести восемьдесят девять рублей 
4151 - четыре тысячи сто пятьдесят один рубль 
4183 - четыре тысячи сто восемьдесят три рубля 
1794 - одна тысяча семьсот девяносто четыре рубля 
4078 - четыре тысячи семьдесят восемь рублей 
1945 - одна тысяча девятьсот сорок пять рублей 
6739 - шесть тысяч семьсот тридцать девять рублей 
2987 - две тысячи девятьсот восемьдесят семь рублей 
2554 - две тысячи пятьсот пятьдесят четыре рубля 
1 - один рубль 
5445 - пять тысяч четыреста сорок пять рублей 
4850 - четыре тысячи восемьсот пятьдесят рублей 
2950 - две тысячи девятьсот пятьдесят рублей 
765 - семьсот шестьдесят пять рублей 
3918 - три тысячи девятьсот восемнадцать рублей 
2519 - две тысячи пятьсот девятнадцать рублей 
2608 - две тысячи шестьсот восемь рублей 
3396 - три тысячи триста девяносто шесть рублей 
1075 - одна тысяча семьдесят пять рублей 
1187 - одна тысяча сто восемьдесят семь рублей 
2314 - две тысячи триста четырнадцать рублей 
658 - шестьсот пятьдесят восемь рублей 
1528 - одна тысяча пятьсот двадцать восемь рублей 
794 - семьсот девяносто четыре рубля 
3 - три рубля 
1262 - одна тысяча двести шестьдесят два рубля 
787 - семьсот восемьдесят семь рублей 
231 - двести тридцать один рубль 
1048 - одна тысяча сорок восемь рублей 
595 - пятьсот девяносто пять рублей 
1249 - одна тысяча двести сорок девять рублей 
906 - девятьсот шесть рублей 
320 - триста двадцать рублей 
240 - двести сорок рублей 
510 - пятьсот десять рублей 
846 - восемьсот сорок шесть рублей 
463 - четыреста шестьдесят три рубля 
383 - триста восемьдесят три рубля 
537 - пятьсот тридцать семь рублей 
341 - триста сорок один рубль 
468 - четыреста шестьдесят восемь рублей 
586 - пятьсот восемьдесят шесть рублей 
179 - сто семьдесят девять рублей 
311 - триста одиннадцать рублей 
535 - пятьсот тридцать пять рублей 
459 - четыреста пятьдесят девять рублей 
74 - семьдесят четыре рубля 
19 - девятнадцать рублей 
255 - двести пятьдесят пять рублей 
291 - двести девяносто один рубль 
33 - тридцать три рубля 
26 - двадцать шесть рублей 
140 - сто сорок рублей 
234 - двести тридцать четыре рубля 
216 - двести шестнадцать рублей 
9 - девять рублей 
50 - пятьдесят рублей 
59 - пятьдесят девять рублей 
108 - сто восемь рублей 
113 - сто тринадцать рублей 
21 - двадцать один рубль 
65 - шестьдесят пять рублей 
33 - тридцать три рубля 
129 - сто двадцать девять рублей 
34 - тридцать четыре рубля 
132 - сто тридцать два рубля 
120 - сто двадцать рублей 
39 - тридцать девять рублей 
6 - шесть рублей 
77 - семьдесят семь рублей 
13 - тринадцать рублей 
14 - четырнадцать рублей 
69 - шестьдесят девять рублей 
51 - пятьдесят один рубль 
52 - пятьдесят два рубля 
64 - шестьдесят четыре рубля 
37 - тридцать семь рублей 
4 - четыре рубля 
41 - сорок один рубль 
25 - двадцать пять рублей 
19 - девятнадцать рублей 
32 - тридцать два рубля 
9 - девять рублей 
21 - двадцать один рубль 
15 - пятнадцать рублей 
2 - два рубля 
11 - одиннадцать рублей 
0 - ноль рублей
8 - восемь рублей 
22 - двадцать два рубля 
13 - тринадцать рублей 
1 - один рубль 
20 - двадцать рублей 
16 - шестнадцать рублей 
8 - восемь рублей 
3 - три рубля 
9 - девять рублей 
13 - тринадцать рублей 
4 - четыре рубля 
13 - тринадцать рублей 
10 - десять рублей 
9 - девять рублей 
2 - два рубля 
3 - три рубля 
2 - два рубля 
2 - два рубля 
6 - шесть рублей 
2 - два рубля 
7 - семь рублей 
2 - два рубля 
0 - ноль рублей
5 - пять рублей 
0 - ноль рублей
5 - пять рублей 
2 - два рубля 
1 - один рубль 
0 - ноль рублей
2 - два рубля 
0 - ноль рублей
1 - один рубль 
0 - ноль рублей
2 - два рубля 
2 - два рубля 
1 - один рубль 
0 - ноль рублей
2 - два рубля 
2 - два рубля 
1 - один рубль 
0 - ноль рублей
0 - ноль рублей
1 - один рубль