Ввести костанту (массив) для дней в месяце, а дальше обратным отсчетом.
Код:
type
TDayInMonth = record
month : месяц;
days : integer;
end;
const
cDayInMonth : Array [1..12] Integer = (31, 29, 31, 30,...),
...
var
n : Integer;
m : Integer;
ResDate : String;
n := k;
For I := 1 To 12 Do
begin
m := I;
If n <= cDayInMonth[i] Then break;
n := n - cDayInMonth[i];
end;
ResDate :=IntToStr(n) + ' ' + месяцToStr(месяц(m-1));
Если что непонятно - пиши.