#B1495. 乘法运算竖式

乘法运算竖式

【题目描述】

给定两个正整数 m,nm,n,其中 n≤mn\le m。

请模拟 m×nm\times n 的乘法竖式,并按以下顺序输出:

  1. 被乘数 mm;
  2. 乘数 nn;
  3. 从 nn 的个位到最高位,依次处理每个非零数位。对于位于第 kk 位的数位 dd,输出 m×d×10k−1m\times d\times10^{k-1} 作为部分积;
  4. 输出最终乘积 m×nm\times n。

所有输出行都以最终乘积的位数为宽度,左侧补空格,使每行的个位对齐。

【输入描述】

输入一行,包含两个正整数 m,nm,n。

保证:

  • 1≤n≤m<10001\le n\le m<1000。

【输出描述】

按照题目描述的顺序输出乘法竖式。

每行只包含必要的前导空格和数字,不输出多余空格。

【样例 1】

【样例 1 输入】

129 91

【样例 1 输出】

  129
   91
  129
11610
11739

【样例 1 解释】

最终乘积为 11739,宽度为 55。

乘数 91 从个位到高位的非零数位为 1,91,9。个位数位产生部分积 129129,十位数位产生部分积 129×9×10=11610129\times9\times10=11610。所有输出行都按最终乘积的位数右对齐。

【样例 2】

【样例 2 输入】

900 120

【样例 2 输出】

   900
   120
 18000
 90000
108000

【样例 2 解释】

乘数 120 的个位为 00,不输出对应的部分积;十位数位 22 产生部分积 900×2×10=18000900\times2\times10=18000,百位数位 11 产生部分积 900×1×100=90000900\times1\times100=90000。

【数据规模与约定】

测试点编号 分数 特殊性质
1 ~ 5 50 m<100m<100
6 ~ 10 1≤n≤m<10001\le n\le m<1000