It is not ideal, because tabstackengine does not have cell underlining/fill facilities built in. (see ADDENDUM for the beginnings of a remedy to that)
\documentclass{article}
\usepackage{tabstackengine,mathtools}
\stackMath
\setstacktabbedgap{1.5ex}
\setstackgap{S}{3pt}
\newcommand\showdiv[1]{\smash{\raisebox{1.5pt}{\scalebox{1.15}{)}}}#1}
\newcommand\laprule[1]{\rlap{\rshift\smash{\rule[-1pt]{#1}{.5pt}}}}
\makeatletter
\newcommand\rshift[1][0pt]{\hspace{\dimexpr#1+\tabbed@gap\relax}}
\makeatother
\begin{document}
\[
\tabbedShortstack[r]{
& & & & +x^4 & +x^3 & & & +1\\
\laprule{188pt}&&&&&&&&\\
x^3 + x + 1 & \showdiv{{+}x^7} & +x^6 & +x^5 &&&+x^2 & +x & \\
& +x^7 && +x^5 & +x^4&&&&\\
\laprule{97pt}&&&&&&&&\\
&& +x^6 && +x^4 &&&&\\
&& +x^6 && +x^4 & +x^3&&&\\
&\laprule{94pt}&&&&&&&\\
&&&&& +x^3 & +x^2 & +x&\\
&&&&& +x^3 && +x &+1\\
&&&&\laprule{84pt}&&&&\\
&&&&&& +x^2 & &+1
}
\]
\end{document}

ADDENDUM
I've been meaning, for a while, to create the TABstack equivalent of \hline and \cline. This will alleviate the need to estimate actual lengths for lapped underlines. This seemed like a good problem on which to start. I have, for the moment, built the underlying \TABrule which, at this time needs to be called in each field where it is used. Eventually, I hope to be able to build a \TABhline and \TABcline which will construct a string of \TABrule& combinations to make the syntax shorter. But here it is so far. If successful, I will implement into the tabstackengine package.
\documentclass{article}
\usepackage{tabstackengine,mathtools}
\stackMath
\setstacktabbedgap{1.5ex}
\setstackgap{S}{3pt}
\newcommand\showdiv{\llap{\smash{\raisebox{1.8pt}{\scalebox{1}[1.2]{)}}}}}
\newcommand\laprule[1]{\rlap{\rshift\smash{\rule[-1pt]{#1}{.5pt}}}}
\makeatletter
\newcommand\rshift[1][0pt]{\hspace{\dimexpr#1+\tabbed@gap\relax}}
\makeatother
%%%%%%%%%%%%%
\makeatletter
\def\trao{0pt}
\newcommand\TABrule[1][\trao]{%
\ifnum1=\value{TABcolindex@}\relax%
\makebox[\TABwd{\theTABcolindex@}][l]{%
\rule[\trao]{\dimexpr\TABwd{\theTABcolindex@}+.5\dimexpr\TAB@gap\relax}{\fboxrule}}%
\else%
\ifnum\TABcells{1}=\value{TABcolindex@}\relax%
\makebox[\TABwd{\theTABcolindex@}][r]{%
\rule[\trao]{\dimexpr\TABwd{\theTABcolindex@}+.5\dimexpr\TAB@gap\relax}{\fboxrule}}%
\else%
\makebox[\TABwd{\theTABcolindex@}][c]{%
\rule[\trao]{\dimexpr\TABwd{\theTABcolindex@}+1.\dimexpr\TAB@gap\relax}{\fboxrule}}%
\fi%
\fi%
}
\newcommand\set@TABrule@gap[1]{%
\ifstrequal{#1}{D}{\def\TAB@gap{\tabbed@gap}}{%
\ifstrequal{#1}{A}{\def\TAB@gap{0pt}}{\def\TAB@gap{\tabular@gap}}%
}%
}
\usepackage{xpatch}
\xpatchcmd{\@TAB@stack}{\bgroup}{\bgroup\set@TABrule@gap{#3}}{}{}
\xpatchcmd{\@TABstackonunder}{\bgroup}{\bgroup\set@TABrule@gap{#4}}{}{}
\makeatother
%%%%%%%%%%%%%
\begin{document}
\[
\tabbedShortstack[r]{
& & & & +x^4 & +x^3 & & & +1\\
&\TABrule&\TABrule&\TABrule&\TABrule&\TABrule&\TABrule&\TABrule&\TABrule\\
x^3 + x + 1 & \showdiv{+}x^7 & +x^6 & +x^5 &&&+x^2 & +x & \\
& +x^7 && +x^5 & +x^4&&&&\\
&\TABrule&\TABrule&\TABrule&\TABrule&&&&\\
&& +x^6 && +x^4 &&&&\\
&& +x^6 && +x^4 & +x^3&&&\\
&&\TABrule&\TABrule&\TABrule&\TABrule&&&\\
&&&&& +x^3 & +x^2 & +x&\\
&&&&& +x^3 && +x &+1\\
&&&&&\TABrule&\TABrule&\TABrule&\TABrule\\
&&&&&& +x^2 & &+1
}
\]
\end{document}

\documentclassand ending with\end{document}. – Bobyandbob Jun 13 '17 at 13:09