主题:高精度加法问题
johnyike
[专家分:0] 发布于 2008-03-10 00:34:00
1、输入一个正整数n(5 n 200),让计算机从0开始循环不断加99999的运算,直到和的位数达到n为止。如:
输入:5
输出:99999
回复列表 (共5个回复)
沙发
angwuy [专家分:2280] 发布于 2008-03-10 12:38:00
打表吧
板凳
lixeb [专家分:80] 发布于 2008-03-10 14:38:00
{让计算机从0开始循环不断加99999的运算}让计算机模拟小学生做加法
3 楼
小田甜 [专家分:3910] 发布于 2008-03-16 13:48:00
求对数
4 楼
pascal玩家 [专家分:280] 发布于 2008-07-04 10:26:00
直接这么做省事
program x;
var a,n:integer;
begin
read(n);
for a:=1 to n do
write(9);
end.
还可以一直到32768位,多好
5 楼
Mato完整版 [专家分:1270] 发布于 2008-07-04 13:40:00
楼上的,照你这么说2个99999相加等于999999了。
我的算法:
99999=100000-1,所以假设进行了X次加法,最终结果将是(100000-1)X=100000X-X。
而100000X就是X后面加5个0。
只要不断加1,加到(N-5)位为止,再加5个0就是100000X。
最小的(N-5)位数是10……0(共(N-6)个0),后面再加5个0,就是1后面(N-1)个0。
还有由于最后要减去N,所以100000X还要加一个不大于N的数,由于本题N最大200,只要加100000(保证100000的倍数)就行了。
可是本题并不要求输出X,而是输出99999X,
所以本题就是求10……0100000((N-7)个0)减去N的值是多少,显然只要用一次高精度减法就行了。
当然还有一个问题,就是当N<7时,不能使用上面的算法,直接打印就行了。
我来回复