Утро Доброе!!!
Помогите Пожалуйста дорешать задачу, очень надо
http://acm.timus.ru/problem.aspx?space=1&num=1803
Моё решение:
 import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
Scanner con = new Scanner(System.in);

int k = con.nextInt();
int n = con.nextInt();

int[] kup = new int[n];

kup[0] = 1;
kup[1] = 1;

ArrayList<Integer> A = new ArrayList<Integer>();
A.add(1);
ArrayList<Integer> B = new ArrayList<Integer>();
B.add(1);
ArrayList<Integer> C = new ArrayList<Integer>();

int l = 6;
k = (int)Math.pow(k, l);

for(int i = 2; i<n; i++){
int nu = B.size() - A.size(); // переменная, в которой хранится разность длин двух списков
for(int __k = 0; __k<nu; __k++){
A.add(0);
}

int ad = 0;
int summ = 0; // сумма цифр набора
for(int __k = 0; __k<A.size(); __k++){
int tmp = A.get(__k) + B.get(__k) + ad;
ad = tmp / k;
C.add(tmp%k);
summ += tmp%k;
}
if (ad > 0){
C.add(ad);
summ += ad%k;
}

kup[i] = summ;

A = B;
B = C;
C = new ArrayList<Integer>();
}

for(int i = 0; i<n ;i++){
C.add(kup[i]);
}

Arrays.sort(kup);

for(int i =0; i< C.size()-1;i++){
int ind = C.indexOf(kup[i]);
System.out.print(ind+1 + " ");
C.set(ind, 0);
}
int ind = C.indexOf(kup[kup.length-1]);
System.out.println(ind+1);

}
}
Для того, чтобы уложится во время, я считал в длинных числах по основанию k ^ l <= 10^6. Чем больше l - тем быстрее будут операции с длинными числами, тем быстрее будет все работать:
int l = 6;
k = (int)Math.pow(k, l);

Неправильно выводится результат на первом же тесте, который приведён в задании. Помогите Пожалуйста устранить ошибки!