#include <iostream>
#include <string>
std::string UpTo19(uint32_t val, bool isOne=false)
{
switch(val)
{
case 0: return "Null";
case 1:
if(isOne)
return "eins";
else
return "ein";
case 2: return "zwei";
case 3: return "drei";
case 4: return "vier";
case 5: return "fünf";
case 6: return "sechs";
case 7: return "sieben";
case 8: return "acht";
case 9: return "neun";
case 10:return "zehn";
case 11:return "elf";
case 12:return "zwölf";
case 16:return "sechzehn";
case 17:return "siebzehn";
default:return UpTo19(val%10)+"zehn";
}
}
std::string UpTo99(uint32_t val, bool isOne=false)
{
if(val<20) return UpTo19(val, isOne);
std::string word;
if(val%10)
word=UpTo19(val%10, false)+"und";
switch(val/10)
{
case 2: word+="zwanzig"; break;
case 3: word+="dreissig"; break;
case 4: word+="vierzig"; break;
case 5: word+="fünfzig"; break;
case 6: word+="sechzig"; break;
case 7: word+="siebzig"; break;
case 8: word+="achtzig"; break;
case 9: word+="neunzig"; break;
}
return word;
}
int main() {
for(int i=0; i<100; ++i)
{
std:: cout << UpTo99(i, i==1) << "\n";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RkOjpzdHJpbmcgVXBUbzE5KHVpbnQzMl90IHZhbCwgYm9vbCBpc09uZT1mYWxzZSkKewoJc3dpdGNoKHZhbCkKCXsKCQljYXNlIDA6IHJldHVybiAiTnVsbCI7CgkJY2FzZSAxOgoJCQlpZihpc09uZSkKCQkJCXJldHVybiAiZWlucyI7CgkJCWVsc2UKCQkJCXJldHVybiAiZWluIjsKCQljYXNlIDI6CXJldHVybiAiendlaSI7CgkJY2FzZSAzOglyZXR1cm4gImRyZWkiOwoJCWNhc2UgNDoJcmV0dXJuICJ2aWVyIjsKCQljYXNlIDU6CXJldHVybiAiZsO8bmYiOwoJCWNhc2UgNjoJcmV0dXJuICJzZWNocyI7CgkJY2FzZSA3OglyZXR1cm4gInNpZWJlbiI7CgkJY2FzZSA4OglyZXR1cm4gImFjaHQiOwoJCWNhc2UgOToJcmV0dXJuICJuZXVuIjsKCQljYXNlIDEwOnJldHVybiAiemVobiI7CgkJY2FzZSAxMTpyZXR1cm4gImVsZiI7CgkJY2FzZSAxMjpyZXR1cm4gInp3w7ZsZiI7CgkJY2FzZSAxNjpyZXR1cm4gInNlY2h6ZWhuIjsKCQljYXNlIDE3OnJldHVybiAic2llYnplaG4iOwoJCWRlZmF1bHQ6cmV0dXJuIFVwVG8xOSh2YWwlMTApKyJ6ZWhuIjsKCX0KfQoKc3RkOjpzdHJpbmcgVXBUbzk5KHVpbnQzMl90IHZhbCwgYm9vbCBpc09uZT1mYWxzZSkKewoJaWYodmFsPDIwKSByZXR1cm4gVXBUbzE5KHZhbCwgaXNPbmUpOwoJc3RkOjpzdHJpbmcgd29yZDsKCWlmKHZhbCUxMCkKCQl3b3JkPVVwVG8xOSh2YWwlMTAsIGZhbHNlKSsidW5kIjsKCglzd2l0Y2godmFsLzEwKQoJewoJCWNhc2UgMjogd29yZCs9Inp3YW56aWciOyAgYnJlYWs7CgkJY2FzZSAzOiB3b3JkKz0iZHJlaXNzaWciOyAgYnJlYWs7CgkJY2FzZSA0OiB3b3JkKz0idmllcnppZyI7ICBicmVhazsKCQljYXNlIDU6IHdvcmQrPSJmw7xuZnppZyI7ICBicmVhazsKCQljYXNlIDY6IHdvcmQrPSJzZWNoemlnIjsgIGJyZWFrOwoJCWNhc2UgNzogd29yZCs9InNpZWJ6aWciOyAgYnJlYWs7CgkJY2FzZSA4OiB3b3JkKz0iYWNodHppZyI7ICBicmVhazsKCQljYXNlIDk6IHdvcmQrPSJuZXVuemlnIjsgIGJyZWFrOwoJfQoJcmV0dXJuIHdvcmQ7Cn0KCmludCBtYWluKCkgewoJZm9yKGludCBpPTA7IGk8MTAwOyArK2kpCgl7CgkJc3RkOjogY291dCA8PCBVcFRvOTkoaSwgaT09MSkgPDwgIlxuIjsKCX0KfQ==