- using System; 
- using System.Collections.Generic; 
- public class Test 
- { 
- 	public static Dictionary<string,int> NumDict; 
-     public static Dictionary<string,int> MilharDict; 
-     public static int ExtensoToInteiro(string extenso) 
- 	{            
-   
- 	    if (NumDict == null) 
- 	    { 
- 	        NumDict = new Dictionary<string,int>(); 
- 	        MilharDict = new Dictionary<string,int>(); 
-   
- 	        NumDict.Add("zero",0); 
- 	        NumDict.Add("um",1); 
- 	        NumDict.Add("dois",2); 
- 	        NumDict.Add("três",3); 
- 	        NumDict.Add("quatro",4); 
- 	        NumDict.Add("cinco",5); 
- 	        NumDict.Add("seis",6); 
- 	        NumDict.Add("sete",7); 
- 	        NumDict.Add("oito",8); 
- 	        NumDict.Add("nove",9); 
-   
- 	        NumDict.Add("dez",10); 
- 	        NumDict.Add("onze",11); 
- 	        NumDict.Add("doze",12); 
- 	        NumDict.Add("treze",13); 
- 	        NumDict.Add("quatorze",14); 
- 	        NumDict.Add("quinze",15); 
- 	        NumDict.Add("dezesseis",16); 
- 	        NumDict.Add("dezessete",17); 
- 	        NumDict.Add("dezoito",18); 
- 	        NumDict.Add("dezenove",19); 
-   
- 	        NumDict.Add("vinte",20); 
- 	        NumDict.Add("trinta",30); 
- 	        NumDict.Add("quarenta",40); 
- 	        NumDict.Add("cinquenta",50); 
- 	        NumDict.Add("sessenta",60); 
- 	        NumDict.Add("setenta",70); 
- 	        NumDict.Add("oitenta",80); 
- 	        NumDict.Add("noventa",90); 
-   
- 	        NumDict.Add("cem",100); 
- 	        NumDict.Add("cento",100);  
- 	        NumDict.Add("duzentos",200); 
- 	        NumDict.Add("trezentos",300); 
- 	        NumDict.Add("quatrocentos",400); 
- 	        NumDict.Add("quinhentos",500); 
- 	        NumDict.Add("seiscentos",600); 
- 	        NumDict.Add("setecentos",700); 
- 	        NumDict.Add("oitocentos",800); 
- 	        NumDict.Add("novecentos",900); 
-   
- 	        MilharDict.Add("mil",1000); 
- 	        MilharDict.Add("milhão",1000000); 
- 	        MilharDict.Add("milhões",1000000); 
- 	        MilharDict.Add("bilhão",1000000000); 
- 	        MilharDict.Add("bilhões",1000000000); 
- 	    } 
-   
- 	    int resultado = 0; 
- 	    int grupoCorrente = 0; 
-   
- 	    foreach (var word in extenso.Split(' ')) 
- 	    { 
- 	        if (NumDict.ContainsKey(word)) 
- 	        { 
- 	            grupoCorrente += NumDict[word]; 
- 	        } 
- 	        else if (MilharDict.ContainsKey(word)) 
- 	        { 
- 	            resultado += (grupoCorrente == 0 ? 1 : grupoCorrente) * MilharDict[word]; 
- 	            grupoCorrente = 0; 
- 	        }                
- 	    } 
-   
- 	    resultado += grupoCorrente; 
-   
- 	    return resultado; 
- 	} 
- 	public static void Main() 
- 	{ 
- 		Console.WriteLine(ExtensoToInteiro("trinta mil e um real")); 
- 	} 
- } 
-   
-   
-   
-   
				dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyBEaWN0aW9uYXJ5PHN0cmluZyxpbnQ+IE51bURpY3Q7CiAgICBwdWJsaWMgc3RhdGljIERpY3Rpb25hcnk8c3RyaW5nLGludD4gTWlsaGFyRGljdDsKICAgIHB1YmxpYyBzdGF0aWMgaW50IEV4dGVuc29Ub0ludGVpcm8oc3RyaW5nIGV4dGVuc28pCgl7ICAgICAgICAgICAKCQoJICAgIGlmIChOdW1EaWN0ID09IG51bGwpCgkgICAgewoJICAgICAgICBOdW1EaWN0ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLGludD4oKTsKCSAgICAgICAgTWlsaGFyRGljdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZyxpbnQ+KCk7CgkKCSAgICAgICAgTnVtRGljdC5BZGQoInplcm8iLDApOwoJICAgICAgICBOdW1EaWN0LkFkZCgidW0iLDEpOwoJICAgICAgICBOdW1EaWN0LkFkZCgiZG9pcyIsMik7CgkgICAgICAgIE51bURpY3QuQWRkKCJ0csOqcyIsMyk7CgkgICAgICAgIE51bURpY3QuQWRkKCJxdWF0cm8iLDQpOwoJICAgICAgICBOdW1EaWN0LkFkZCgiY2luY28iLDUpOwoJICAgICAgICBOdW1EaWN0LkFkZCgic2VpcyIsNik7CgkgICAgICAgIE51bURpY3QuQWRkKCJzZXRlIiw3KTsKCSAgICAgICAgTnVtRGljdC5BZGQoIm9pdG8iLDgpOwoJICAgICAgICBOdW1EaWN0LkFkZCgibm92ZSIsOSk7CgkKCSAgICAgICAgTnVtRGljdC5BZGQoImRleiIsMTApOwoJICAgICAgICBOdW1EaWN0LkFkZCgib256ZSIsMTEpOwoJICAgICAgICBOdW1EaWN0LkFkZCgiZG96ZSIsMTIpOwoJICAgICAgICBOdW1EaWN0LkFkZCgidHJlemUiLDEzKTsKCSAgICAgICAgTnVtRGljdC5BZGQoInF1YXRvcnplIiwxNCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJxdWluemUiLDE1KTsKCSAgICAgICAgTnVtRGljdC5BZGQoImRlemVzc2VpcyIsMTYpOwoJICAgICAgICBOdW1EaWN0LkFkZCgiZGV6ZXNzZXRlIiwxNyk7CgkgICAgICAgIE51bURpY3QuQWRkKCJkZXpvaXRvIiwxOCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJkZXplbm92ZSIsMTkpOwoJCgkgICAgICAgIE51bURpY3QuQWRkKCJ2aW50ZSIsMjApOwoJICAgICAgICBOdW1EaWN0LkFkZCgidHJpbnRhIiwzMCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJxdWFyZW50YSIsNDApOwoJICAgICAgICBOdW1EaWN0LkFkZCgiY2lucXVlbnRhIiw1MCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJzZXNzZW50YSIsNjApOwoJICAgICAgICBOdW1EaWN0LkFkZCgic2V0ZW50YSIsNzApOwoJICAgICAgICBOdW1EaWN0LkFkZCgib2l0ZW50YSIsODApOwoJICAgICAgICBOdW1EaWN0LkFkZCgibm92ZW50YSIsOTApOwoJCgkgICAgICAgIE51bURpY3QuQWRkKCJjZW0iLDEwMCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJjZW50byIsMTAwKTsgCgkgICAgICAgIE51bURpY3QuQWRkKCJkdXplbnRvcyIsMjAwKTsKCSAgICAgICAgTnVtRGljdC5BZGQoInRyZXplbnRvcyIsMzAwKTsKCSAgICAgICAgTnVtRGljdC5BZGQoInF1YXRyb2NlbnRvcyIsNDAwKTsKCSAgICAgICAgTnVtRGljdC5BZGQoInF1aW5oZW50b3MiLDUwMCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJzZWlzY2VudG9zIiw2MDApOwoJICAgICAgICBOdW1EaWN0LkFkZCgic2V0ZWNlbnRvcyIsNzAwKTsKCSAgICAgICAgTnVtRGljdC5BZGQoIm9pdG9jZW50b3MiLDgwMCk7CgkgICAgICAgIE51bURpY3QuQWRkKCJub3ZlY2VudG9zIiw5MDApOwoJCgkgICAgICAgIE1pbGhhckRpY3QuQWRkKCJtaWwiLDEwMDApOwoJICAgICAgICBNaWxoYXJEaWN0LkFkZCgibWlsaMOjbyIsMTAwMDAwMCk7CgkgICAgICAgIE1pbGhhckRpY3QuQWRkKCJtaWxow7VlcyIsMTAwMDAwMCk7CgkgICAgICAgIE1pbGhhckRpY3QuQWRkKCJiaWxow6NvIiwxMDAwMDAwMDAwKTsKCSAgICAgICAgTWlsaGFyRGljdC5BZGQoImJpbGjDtWVzIiwxMDAwMDAwMDAwKTsKCSAgICB9CgkKCSAgICBpbnQgcmVzdWx0YWRvID0gMDsKCSAgICBpbnQgZ3J1cG9Db3JyZW50ZSA9IDA7CgkKCSAgICBmb3JlYWNoICh2YXIgd29yZCBpbiBleHRlbnNvLlNwbGl0KCcgJykpCgkgICAgewoJICAgICAgICBpZiAoTnVtRGljdC5Db250YWluc0tleSh3b3JkKSkKCSAgICAgICAgewoJICAgICAgICAgICAgZ3J1cG9Db3JyZW50ZSArPSBOdW1EaWN0W3dvcmRdOwoJICAgICAgICB9CgkgICAgICAgIGVsc2UgaWYgKE1pbGhhckRpY3QuQ29udGFpbnNLZXkod29yZCkpCgkgICAgICAgIHsKCSAgICAgICAgICAgIHJlc3VsdGFkbyArPSAoZ3J1cG9Db3JyZW50ZSA9PSAwID8gMSA6IGdydXBvQ29ycmVudGUpICogTWlsaGFyRGljdFt3b3JkXTsKCSAgICAgICAgICAgIGdydXBvQ29ycmVudGUgPSAwOwoJICAgICAgICB9ICAgICAgICAgICAgICAgCgkgICAgfQoJCgkgICAgcmVzdWx0YWRvICs9IGdydXBvQ29ycmVudGU7CgkKCSAgICByZXR1cm4gcmVzdWx0YWRvOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKEV4dGVuc29Ub0ludGVpcm8oInRyaW50YSBtaWwgZSB1bSByZWFsIikpOwoJfQp9CgoKCg==