1783:luo double

时间限制:1 S   /  内存限制:65536 KB
AC:42   /  Submit:143
问题描述

罗少写了这样一段代码:

double a;
cin >> a;
cout << a;

紧接着他输入(input)了几个数字,并得到了以下输出(output):

input:  01010
output: 1010
input:  1023.000001020
output: 1023
input:  0456.78900
output: 456.789
input:  0000.1000
output: 0.1
input:  998244353
output: 9.98244e+008
input:  .18057
output: 0.18057

罗少发现,$$double$$类型的数据在输出时,没有意义的$$0$$都被忽略了,小数点前遗漏的的$$0$$也会补上。

不仅如此,罗少还发现当输入的数字位数较长时,这段代码似乎不能精确地输出结果,查阅相关资料后罗少得知:

默认情况下,cout 只输出 6 位有效数字(这 6 位包括小数点前的数字,小数点后最后一位会四舍五入),于是罗少又来了一组输入想验证一下

input:  12.3456789
output: 12.3457

果然没错!但是对于一个追求完美的人来说,这样的结果显然是罗少不能接受的。

他想发明一种新的数据类型$$luo\ double$$,默认输出$$1024$$位有效数字,其他和$$double$$是一样的。

输入描述

第一行是一个正整数$$T$$表示测试案例的数量。($$1 \leq T \leq 100$$)

每组案例包含一个可能无法用$$double$$进行精确存储的实数$$n$$,并保证:

● $$n$$的长度在$$1-100$$之间且只可能是整数或小数。

● 如果$$n$$是整数,那么$$n$$的每一位均由$$0-9$$构成。

● 如果$$n$$是小数,那么它一定可以表示成a.b.b的形式,其中$$a,b$$的每一位也均由$$0-9$$构成。

输出描述

针对每组案例,输出一个数字表示你的答案。

样例输入复制样例

7

01010

1023.000001020

0456.78900

0000.1000

998244353

.18057

12.3456789

样例输出

1010

1023.00000102

456.789

0.1

998244353

0.18057

12.3456789

提示说明

$$luo\ double$$默认输出$$1024$$位有效数字,而给定的$$n$$最长只有$$100$$位,所以一定不会发生四舍五入。

因此你可以用上面提供的代码来测试$$double$$有效位数以内的数据,其输出的答案应该与你的代码一致。

换言之,本题似乎只需要你找到一个与输入数字$$n$$相等的最简数字,其输出格式应符合数学中的表达。

相关

23-24(1)第6次线上赛


Copyright 2016 - 2024 XUJC ACM Team
闽ICP备2020022076号-1