Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.
- *If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
- *NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters.
- *The use of "and" when writing out numbers is in compliance with British usage.
- *
- * @author Kushtrim
- * @version 1.01
- */
- public class NumberNames
- {
- int[] ones = {0,"one".length(),"two".length(),"three".length(),"four".length(),"five".length(),"six".length(),"seven".length(),"eight".length(),"nine".length()};
- int[] teens = {"ten".length(),"eleven".length(),"twelve".length(),"thirteen".length(),"fourteen".length(),"fifteen".length(),"sixteen".length(),"seventeen".length(),"eighteen".length(),"nineteen".length()};
- int[] tens = {0,0,"twenty".length(),"thirty".length(),"forty".length(),"fifty".length(),"sixty".length(),"seventy".length(),"eighty".length(),"ninety".length()};
- int AND = 3;
- int HUNDRED = 7;
- public static void main(String args[])
- {
- NumberNames llogarit = new NumberNames();
- int shuma=0;
- for (int i = 1 ; i!=1001 ; i++)
- {
- shuma+= llogarit.countLetters(i);
- }
- System.out.println(shuma);
- }
- /**
- * Merr nje numer ( deri ne 1000), dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
- */
- public int countLetters(int number)
- {
- int n = (number+"").length();
- int letterNumber=0;
- switch(n)
- {
- case 1 : {
- letterNumber = processOnes(number);
- break;
- }
- case 2 : {
- letterNumber = processTens(number);
- break;
- }
- case 3 : {
- letterNumber = processHundreds(number);
- break;
- }
- case 4 : {
- letterNumber = "oneThousand".length();
- break;
- }
- }
- return letterNumber;
- }
- /**
- * Merr nje numer nje-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
- */
- private int processOnes( int nr)
- {
- int answer = ones[nr]; // numri ne vargun ones, me indeksin nr, paraqet numrin e shkronjave qe do duheshin per ta shkruar atë (nr) ( ne gjuhen angleze )
- return answer;
- }
- /**
- * Merr nje numer prej 10-19 dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
- */
- private int processTeens( int nr)
- {
- int o = nr%10; // p.sh. per 12, llogarit 2
- int answer = teens[o]; // numri ne vargun teens, me indeksin o, paraqet numrin e shkronjave qe do duheshin per ta shkruar (nr) ( ne gjuhen angleze )
- return answer;
- }
- /**
- * Merr nje numer dy-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
- */
- private int processTens( int nr)
- {
- int t = nr/10; // p.sh. per 53, llogarit 5
- int o = nr%10; // p.sh. per 53, llogarit 3
- int answer=0;
- if ( t == 1)
- {
- answer = processTeens(nr); // pra eshte ne intervalin 10-19
- }
- else
- {
- // numri ne vargun tens, me indeksin t, paraqet numrin e shkronjave qe do duheshin per ta shkruar atë (t*10) ( ne gjuhen angleze )
- //p.sh. per 53, tens[5] e kthen gjatesine e "fifty", dhe e therrasim metoden processOnes(3), e cila kthen gjatesine e "three"
- answer = tens[t] + processOnes(o);
- }
- return answer;
- }
- /**
- * Merr nje numer tre-shifror, dhe kthen numrin e shkronjave qe do duheshin per ta shkruar ( ne gjuhen angleze )
- */
- private int processHundreds( int number)
- {
- int h = number/100; // p.sh. per 532 kthen 5
- int t = number%100; // p.sh. per 532 kthen 32
- int answer=0;
- if (t==0)
- {
- answer = ones[h] + HUNDRED; // per 100,200,...,900 thuhet ONE ( ose TWO,THREE,...,NINE) HUNDRED
- }
- else
- {
- // formati : (ONE,...NINE) HUNDRED AND (ONE, TWO,...,NINETY-NINE)
- answer = ones[h] + HUNDRED + AND + processTens(t);
- }
- return answer;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement