## Project Euler – Problem 24

Problem 24: What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?

Wikipedia: Permutation – Generation_in_lexicographic_order

``` ```
``````class runner
{
private static void swap(char[] arr, int l, int k){
char tmp = arr[l];
arr[l]=arr[k];
arr[k] = tmp;
}

public static void permutate(char[] arr){
int k = -1;
for(int i=0;i arr[i]) l=i;
}
}
swap(arr,l,k);

int diff = arr.length - (k+1);
for(int i=0; i
```
Another solution... just dawned on me, after others said there was another way.
```
import java.util.HashMap;
import java.util.Vector;

class Factorial{
private HashMap store = new HashMap();
int getFactorial(int n)
{
int result = 1;
if(n<=0){return result;}
if(store.containsKey(n)) result = store.get(n);
else result = getFactorial(n-1);
store.put(n, result);
return n*result;
}
}

class runner
{
@SuppressWarnings("serial")
public static void main (String[] args) throws java.lang.Exception
{
long time = System.currentTimeMillis();

int max = 1000000;
Vector arr = new Vector(){
{
}
};
Vector output = new Vector();
Factorial obj = new Factorial();

for(int i = arr.size(); i>0; i--){
long split = (long)(obj.getFactorial(i)) / (i);
long j = 0; int count = -1;

do{
j += split;
count ++;
}while( j < max);

max -= split*(count);