题解 P6745 【『MdOI R3』Number】.pas

囧仙

2020-08-08 21:01:23

Solution

## 题目大意 输入 $k,x$ ,输出 $10^k+x$ 。 ## 题解 提供一个 $\text{Pascal} $ 版本的题解,共大家参考。 观察到 $0\le x< 10^{18}$ ,于是当 $k>18$ 时,$x$ 只会影响到结果最后的 $0$ 的部分,也就是不需要考虑进位的问题。 - 当 $k\le 18$ 时,我们能够使用 $\text{math}$ 库中的 $\text{power}$ 函数计算 $10^k$ ,并用 $\text{trunc}$ 函数转为整数。接着直接加上 $x$ 即可。 - 当 $k>18$ 时,我们能够使用 $\text{str}$ 函数将 $x$ 转化为字符串。这样便于我们使用 $\text{length}$ 函数统计 $x$ 的位数 $l$ 。只需要输出 $1$ 个 $\verb!1!$ ,和 $k-l$ 个 $\verb!0!$ ,再接着输出 $x$ 即可。 ## 参考代码 ```pascal uses math; var k,x,l,i,t:int64; var s :string; begin read(k); read(x); if k<=18 then writeln(trunc(power(10,k))+x) else begin write(1); str(x,s); l:=length(s); for i:=1 to k-l do write(0); writeln(x); end; end. ```