```ts
export function tilesAcross(length: number, tile: number): number {
  if (length === 0 || tile === 0) {
    throw new Error("Length and tile size cannot be zero.");
  }
  return Math.ceil(length / tile);
}

export function tilesNeeded(width: number, height: number, tile: number, spare: number): number {
  const totalTiles = width * height;
  const fullTiles = Math.floor(totalTiles / (tile + spare));
  const remainderTiles = totalTiles % (tile + spare);

  if (remainderTiles === 0) {
    return fullTiles;
  } else {
    return fullTiles + 1;
  }
}
```