回 帖 发 新 帖 刷新版面

主题:高精度加法问题

1、输入一个正整数n(5 n 200),让计算机从0开始循环不断加99999的运算,直到和的位数达到n为止。如:
输入:5
输出:99999

回复列表 (共5个回复)

沙发

打表吧

板凳

{让计算机从0开始循环不断加99999的运算}让计算机模拟小学生做加法

3 楼

求对数

4 楼

直接这么做省事
program x;
  var a,n:integer;
  begin
    read(n);
    for a:=1 to n do
      write(9);
  end.
还可以一直到32768位,多好

5 楼

楼上的,照你这么说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时,不能使用上面的算法,直接打印就行了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册