#include <iostream>
#include <string>
std::string dziewietnascie_i_nizej[] = { "zero", "jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec", "dziesiec",
"jedenascie", "dwanascie", "trzynascie", "czternascie", "pietnascie", "szesnascie", "siedemnascie", "osiemnascie", "dziewietnascie" };
std::string dziesiatki[] = { "dwadziescia", "trzydziesci", "czterdziesci", "piecdziesiat", "szescdziesiat", "siedemdziesiat", "osiemdziesiat", "dziewiecdziesiat" };
std::string setki[] = { "sto", "dwiescie", "trzysta", "czterysta", "piecset", "szescset", "siedemset", "osiemset", "dziewiecset" };
std::string iteracje[] = { "tys", "mln" };
std::string oblicz_bez_setek(int, int);
int main()
{
long long liczba = 0;
std::cin >> liczba;
int iteracja = 0;
std::string wynik = "";
std::string temp = "";
int liczba_setek = 0;
do {
liczba_setek = liczba / 100;
if(liczba_setek != 0) {
liczba_setek %= 10;
if(liczba_setek)
temp += setki[liczba_setek - 1];
temp += oblicz_bez_setek(liczba, iteracja);
} else {
temp += oblicz_bez_setek(liczba, iteracja);
}
wynik.insert(0, temp);
temp.clear();
++iteracja;
liczba /= 1000;
} while(liczba);
std::cout << wynik;
return 0;
}
std::string oblicz_bez_setek(int liczba, int iteracja)
{
int reszta_z_dzielenia_przez_dziesiec = 0,
liczba_dziesiatek = 0,
reszta_z_dzielenia_przez_sto = 0;
std::string wynik = "";
reszta_z_dzielenia_przez_sto = liczba % 100;
if(reszta_z_dzielenia_przez_sto == 0) {
// nie printujemy nic
} else if(reszta_z_dzielenia_przez_sto < 20) {
wynik += " " + dziewietnascie_i_nizej[reszta_z_dzielenia_przez_sto];
} else {
liczba_dziesiatek = reszta_z_dzielenia_przez_sto / 10;
if(liczba_dziesiatek != 0) {
wynik += " " + dziesiatki[liczba_dziesiatek - 2];
reszta_z_dzielenia_przez_dziesiec = reszta_z_dzielenia_przez_sto % 10;
if(reszta_z_dzielenia_przez_dziesiec != 0) {
wynik += " " + dziewietnascie_i_nizej[reszta_z_dzielenia_przez_dziesiec];
}
}
}
switch(iteracja) {
case 1:
wynik += " " + iteracje[iteracja - 1] + " ";
break;
case 2:
wynik += " " + iteracje[iteracja - 1] + " ";
break;
default:
break;
}
return wynik;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RkOjpzdHJpbmcgZHppZXdpZXRuYXNjaWVfaV9uaXplaltdID0geyAiemVybyIsICJqZWRlbiIsICJkd2EiLCAidHJ6eSIsICJjenRlcnkiLCAicGllYyIsICJzemVzYyIsICJzaWVkZW0iLCAib3NpZW0iLCAiZHppZXdpZWMiLCAiZHppZXNpZWMiLAoJCQkJCQkJICAiamVkZW5hc2NpZSIsICJkd2FuYXNjaWUiLCAidHJ6eW5hc2NpZSIsICJjenRlcm5hc2NpZSIsICJwaWV0bmFzY2llIiwgInN6ZXNuYXNjaWUiLCAic2llZGVtbmFzY2llIiwgIm9zaWVtbmFzY2llIiwgImR6aWV3aWV0bmFzY2llIiB9OwpzdGQ6OnN0cmluZyBkemllc2lhdGtpW10gPSB7ICJkd2Fkemllc2NpYSIsICJ0cnp5ZHppZXNjaSIsICJjenRlcmR6aWVzY2kiLCAicGllY2R6aWVzaWF0IiwgInN6ZXNjZHppZXNpYXQiLCAic2llZGVtZHppZXNpYXQiLCAib3NpZW1kemllc2lhdCIsICJkemlld2llY2R6aWVzaWF0IiB9OwpzdGQ6OnN0cmluZyBzZXRraVtdID0geyAic3RvIiwgImR3aWVzY2llIiwgInRyenlzdGEiLCAiY3p0ZXJ5c3RhIiwgInBpZWNzZXQiLCAic3plc2NzZXQiLCAic2llZGVtc2V0IiwgIm9zaWVtc2V0IiwgImR6aWV3aWVjc2V0IiB9OwpzdGQ6OnN0cmluZyBpdGVyYWNqZVtdID0geyAidHlzIiwgIm1sbiIgfTsKCnN0ZDo6c3RyaW5nIG9ibGljel9iZXpfc2V0ZWsoaW50LCBpbnQpOwoKaW50IG1haW4oKQp7Cglsb25nIGxvbmcgbGljemJhID0gMDsKCXN0ZDo6Y2luID4+IGxpY3piYTsKCWludCBpdGVyYWNqYSA9IDA7CgoJc3RkOjpzdHJpbmcgd3luaWsgPSAiIjsKCXN0ZDo6c3RyaW5nIHRlbXAgPSAiIjsKCWludCBsaWN6YmFfc2V0ZWsgPSAwOwoKCWRvIHsKCQlsaWN6YmFfc2V0ZWsgPSBsaWN6YmEgLyAxMDA7CgkJaWYobGljemJhX3NldGVrICE9IDApIHsKCQkJbGljemJhX3NldGVrICU9IDEwOwoJCQlpZihsaWN6YmFfc2V0ZWspCgkJCQl0ZW1wICs9IHNldGtpW2xpY3piYV9zZXRlayAtIDFdOwoKCQkJdGVtcCArPSBvYmxpY3pfYmV6X3NldGVrKGxpY3piYSwgaXRlcmFjamEpOwoJCX0gZWxzZSB7CgkJCXRlbXAgKz0gb2JsaWN6X2Jlel9zZXRlayhsaWN6YmEsIGl0ZXJhY2phKTsKCQl9CgkJd3luaWsuaW5zZXJ0KDAsIHRlbXApOwoJCXRlbXAuY2xlYXIoKTsKCQkrK2l0ZXJhY2phOwoJCWxpY3piYSAvPSAxMDAwOwoJfSB3aGlsZShsaWN6YmEpOwoKCXN0ZDo6Y291dCA8PCB3eW5pazsKCXJldHVybiAwOwp9CgpzdGQ6OnN0cmluZyBvYmxpY3pfYmV6X3NldGVrKGludCBsaWN6YmEsIGludCBpdGVyYWNqYSkKewoJaW50IHJlc3p0YV96X2R6aWVsZW5pYV9wcnplel9kemllc2llYyA9IDAsCgkJbGljemJhX2R6aWVzaWF0ZWsgPSAwLAoJCXJlc3p0YV96X2R6aWVsZW5pYV9wcnplel9zdG8gPSAwOwoJc3RkOjpzdHJpbmcgd3luaWsgPSAiIjsKCglyZXN6dGFfel9kemllbGVuaWFfcHJ6ZXpfc3RvID0gbGljemJhICUgMTAwOwoKCWlmKHJlc3p0YV96X2R6aWVsZW5pYV9wcnplel9zdG8gPT0gMCkgewoJCS8vIG5pZSBwcmludHVqZW15IG5pYwoJfSBlbHNlIGlmKHJlc3p0YV96X2R6aWVsZW5pYV9wcnplel9zdG8gPCAyMCkgewoJCXd5bmlrICs9ICIgIiArIGR6aWV3aWV0bmFzY2llX2lfbml6ZWpbcmVzenRhX3pfZHppZWxlbmlhX3ByemV6X3N0b107Cgl9IGVsc2UgewoJCWxpY3piYV9kemllc2lhdGVrID0gcmVzenRhX3pfZHppZWxlbmlhX3ByemV6X3N0byAvIDEwOwoJCWlmKGxpY3piYV9kemllc2lhdGVrICE9IDApIHsKCQkJd3luaWsgKz0gIiAiICsgZHppZXNpYXRraVtsaWN6YmFfZHppZXNpYXRlayAtIDJdOwoJCQlyZXN6dGFfel9kemllbGVuaWFfcHJ6ZXpfZHppZXNpZWMgPSByZXN6dGFfel9kemllbGVuaWFfcHJ6ZXpfc3RvICUgMTA7CgkJCWlmKHJlc3p0YV96X2R6aWVsZW5pYV9wcnplel9kemllc2llYyAhPSAwKSB7CgkJCQl3eW5payArPSAiICIgKyBkemlld2lldG5hc2NpZV9pX25pemVqW3Jlc3p0YV96X2R6aWVsZW5pYV9wcnplel9kemllc2llY107CgkJCX0KCQl9Cgl9Cglzd2l0Y2goaXRlcmFjamEpIHsKCQljYXNlIDE6CgkJCXd5bmlrICs9ICIgIiArIGl0ZXJhY2plW2l0ZXJhY2phIC0gMV0gKyAiICI7CgkJCWJyZWFrOwoJCWNhc2UgMjoKCQkJd3luaWsgKz0gIiAiICsgaXRlcmFjamVbaXRlcmFjamEgLSAxXSArICIgIjsKCQkJYnJlYWs7CgkJZGVmYXVsdDoKCQkJYnJlYWs7Cgl9CgoJcmV0dXJuIHd5bmlrOwp9Cg==