IslamicCalendar = { IslamicThirtyYears, IslamicYears, IslamicMonths }

IslamicThirtyYears[_] := { 30 354 + 11 }
IslamicYears[_] := 354 + { 0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0}
IslamicMonths[path_] := {30,29,30,29,30,29,30,29,30,29,30,29+
 { 0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0}[[path[[2]] ]]}

MyQuotient[n_Integer, list_List ] :=
  Quotient[n, First[list]] + 1 /; Length[list] == 1

MyQuotient[n_Integer, list_List] :=
Block[ { s = First[list], q = 1 },
  While[n > s, q++; s += list[[q]]]; q] /; Length[list] > 1

MyMod[n_Integer, list_List ] :=
  Mod[n, First[list]] /; Length[list] == 1

MyMod[n_Integer, list_List ] :=
  n - Fold[Plus, 0, Take[list, MyQuotient[n,list]-1]] /; Length[list] > 1

SimplestCalendar = 
{ {365}, {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }};
MyQuotient[100,{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }]
MyMod[100,{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }]

MyDigits1[n_,list_] := {n} /; Length[list] == 1
MyDigits1[n_,list_] :=
Prepend[MyDigits1[Mod[n,First[list]],Rest[list]],
Quotient[n,First[list]]] /; VectorQ[list]

MyDigits[n_, b_Integer] := MyDigits1[n,b^Reverse[Range[Log[b,n]]]]

MyDigits[n_,b_List] :=
MyDigits1[n,Reverse[Select[Accumulate[Times,Reverse[b]],# < n&]]] /; VectorQ[b]

MyDigitsLists[n_, {}] := {n}
MyDigitsLists[n_,list_List] :=
Prepend [ MyDigitsLists[MyMod[n, First[list]], Rest[list]],
MyQuotient[n,First[list]]]

MyDigitsLists[100,SimplestCalendar]

MyDigits [ n_, {}, _] := {}
MyDigits [ n_, list_List, path_] :=
Block[{r=MyQuotient[n,First[list][path]]},
Prepend[MyDigits[MyMod[n,First[list][path]],
Rest[list], Append[path,r]],
MyQuotient[n,First[list][path]]]]

DigitsToNumberLists[digits_,list_]:=
(digits[[1]]-1) list[[1,1]]+Last[digits]+
(Plus @@
(Fold[Plus, 0, Take[list[[#]],digits[[#]]-1]]& /@
Range[2,Length[list]]))

DigitsToNumberLists[{1,4,10},SimplestCalendar]