题解 P6745 【『MdOI R3』Number】.pas
囧仙
2020-08-08 21:01:23
## 题目大意
输入 $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.
```