网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月22日漏签0天
pascal吧 关注:14,951贴子:132,338
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 13回复贴,共1页
<<返回pascal吧
>0< 加载中...

【求助】求大神详解高精度

  • 只看楼主
  • 收藏

  • 回复
  • 九号台风
  • 骗分导论
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如题


  • 九号台风
  • 骗分导论
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶


2025-06-22 03:04:16
广告
  • YoEnky
  • for
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看懂代码就好了,很简单的。。。


  • 贽殿丶遮那
  • asset
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你去问问你的小学二年级的老师~~
竖式的原理啊~~


  • 889917417
  • for
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是用数组表示数,如11就用a【1】=1,a[2]=1来表示。当相加减乘时做相应的改动,如55+85,就设a[1]=5,a[2]=5,b[1]=8,b[2]=5,a[2]+b[2]=10就设c[2]=0,c[1]=1,a[1]+b[1]=13,所以c[1]=1+3=4.由于有进位,我个人习惯把整串数往后移一格,即c[3]=0,c[2]=4,c[1]=1,即55+85=140


  • 永远的skyrim
  • 算法导论
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是算阶乘,然后乘2的一个程序
var i,j,n:longint;
c:array[1..1500] of longint;
procedure jw; // 这是高精度进位用的函数
var i,k:longint;
begin
for i:=1 to 1499 do if c[i]>9 then begin
k:=c[i] div 10;
c[i]:=c[i] mod 10;
c[i+1]:=c[i+1]+k;
end;
end;
begin
assign(input,'gl.in');reset(input); //头两行和最后一行是文件操作,不用管
assign(output,'gl.out');rewrite(output);
readln(n);
c[1]:=1; //设定初始值
for i:=2 to n do begin //循环
for j:=1 to 1500 do c[j]:=c[j]*i; //所有位数全部乘以当前阶乘乘到的数
jw; // 进位
end;
for i:=1 to 1500 do c[i]:=c[i]*2; // 全部乘2
jw; //进位
for i:=1500 downto 1 do if c[i]>0 then break; //寻找数的最高位
for j:=i downto 1 do write(c[j]); //从最高位开始向下输出
close(input);close(output);
end.
基础高精度每次操作后都要进位,有改良版的,但那就比较复杂了。


  • martindiao163
  • read
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
noip会考高精度?


  • fourz238
  • begin
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
坦白说,高精度不是中学生能玩的。这里只是简单的说说实现超长整数的要点。
数据结构方面可以用一个数组代表一个非负整数(高端一点的可以包括负整数,即是说再加一个整数以记其正负号),其元素分别对应这个整数的的每个位数。位数的储存次序,以由低位至高位的储存方式较为方便编程工作。
算法的设计可以参考中小学生的算术课本,没有任何特别之处。
一些设计的注意事项:
1)尽管代表的数可以很大,在操作中仍然有溢位之可能。因此,函数要有传回值以便回传错误码。
2)函数的某些参数有可能是相同的位址,因此要设计无误的程式码,要注意读取变数和更改变数的次序问题(另外,如果有些参数根本上不容许是相同的位址,要回传错误码)。更改变数甲后,再读取变数乙,可能会出现问题,因为变数甲和变数乙可能同一位置。因此,要从根本上防止这个问题的出现,比较有系统而乾净的解决方案是,先把源参数抄写到暂时变数,得到结果后再抄写到目的地变数。
3)完成编程后要多加测试,确保结果是正确的。
4)中小学生的乘除算法在计算机上的执行速度会比加减慢很多。位数大概不能超过数千(十进制),否则花时会过长。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回pascal吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示