I was working on Problem 17 on Project Euler:
http://projecteuler.net/index.php?section=problems&id=17
and I'm stuck; my answer is close, but not correct. I got the answer 21108 with the following code:
I do realize the code can be optimized, but I would like to simply get this to work, and not try to make this as efficient as possible.
public class Problem17 {
String[] ones = {"one","two","three","four","five","six","seven","eight","nine"};
String[] tens = {"ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
String[] hundreds = {"onehundred","twohundred","threehundred","fourhundred","fivehundred","sixhundred","sevenhundred","eighthundred","ninehundred"};
String onethousand = "onethousand";
public int totalValue = 0;
public static void main(String[] args) {
Problem17 one = new Problem17();
one.compute();
}
public void compute()
{
for(int x=0;x<=999;x++)
{
System.out.println(x);
getNumberValue(x);
}
totalValue+=11; /// this is for one thousand
System.out.println(totalValue);
}
public void getNumberValue(int number)
{
int originalnumber = number;
int ones = 0;
int tens = 0;
int hundreds = 0;
int numbervalue = 0;
while(number!=0)
{
// If the number >= 100 that means that it has "hundreds" in it.
if(number>=100)
{
number-=100;
hundreds++;
}
//This is for numbers that are less than one-hundred and greater than or equal to ten
if(number<100&&number>=10)
{
number-=10;
tens++;
}
if(number<10&&number>0)
{
number-=1;
ones++;
}
}
if(originalnumber>100){
totalValue+=3;
numbervalue+=3;
}
if(hundreds!=0){
totalValue+= this.hundreds[hundreds-1].length();
numbervalue+= this.hundreds[hundreds-1].length();
}
if(tens!=0){
totalValue+= this.tens[tens-1].length();
numbervalue+= this.tens[tens-1].length();
}
if(ones!=0)
{
totalValue+= this.ones[ones-1].length();
numbervalue+= this.ones[ones-1].length();
}
}
}
Any help would be appreciated!