笔记:高精代码关键语句总结
来源:互联网 发布:四川广电网络成都公网 编辑:程序博客网 时间:2024/05/30 23:53
确实好久没更新了……花功夫去做Vijos了,一天2道……
把去年重庆选拔赛的那个最小公倍数做了,把高精代码贴在这里供大家瞻仰。
每种运算都开了a、b、c三个数组,a、b是输入的要算的数,c是返回的结果。按惯例,数组倒序存字串,就是说a[1]表示的个位。
加法:c[i]:=c[i]+a[i]+b[i];
c[i+1]:=c[i] div 10;
c[i]:=c[i] mod 10;
减法(默认了a比b大):if a[i]<b[i] then
begin
dec(a[i+1],1);
inc(a[i],10);
end;
c[i]:=a[i]-b[i];
乘法:inc(c[i+j-1],a[i]*b[j]);
inc(c[i+j],c[i+j-1]div 10);
c[i+j-1]:=c[i+j-1]mod 10;
除法有点复杂,需要调用前面的三种运算。算法和人做竖式计算一样,模拟试商。
简单说一下:
始终保持两个变量直到最后返回,一个当前得数,一个当前余数。初始化得数为0,余数为被除数。然后不断用当前的余数去减除数,同时当前得数不断跟着加1。
当除数远远小于被除数时,这种方法显然效率很低。为了能一次减很多,可以在每次减之前试商以减去尽可能大的整数倍的除数。试商方法很简单,先搜i再搜j,搜索小于当前余数的最大的“除数*j*10^i”。然后当前余数减去除数*j*10^i,得数加j*10^i。反复这个过程,直到余数小于除数。可以看到,对j的枚举即是试商的过程。
代码写出来不难,十几行搞定。
24的编剧越来越大胆了。
- 笔记:高精代码关键语句总结
- iOS七种传值总结(关键代码)
- 个人总结 Yii 部分关键代码
- Disruptor笔记(四)-关键类和代码
- Disruptor笔记(四)-关键类和代码
- 第四天笔记和计算器关键代码
- 高质量代码的4个关键点
- 良好的习惯是高质量代码的关键
- 代码高亮_总结
- 高质量代码开发总结
- 高质量的代码总结
- 编写高质量代码总结
- Dll的远程线程注入之关键代码描述总结
- springmvc和encache集成关键代码和总结
- libsvm 学习笔记(四)--- grid.py 关键代码详解
- 磁盘分区关键语句
- JavaSE关键语句
- sql关键语句详解
- 关于最近MSN Space无法访问的事情
- 无题 于2006年4月18日
- Java Applet平衡树演示
- 文科生的悲哀:55页的高三数学课本
- 把儿成长中……
- 笔记:高精代码关键语句总结
- 史上最强数字找规律题
- 在FP中如何设置条件断点
- 大开眼界:世上最无敌的迷宫当数“分形迷宫”
- 追溯羊与车:Monty Hall Dilemma问题的故事
- OI: 真正的结束 或者真正的开始
- Life Rated结果:智商偏高体质偏低 感情受挫找到原因
- 来一个强的 我寒假出的政治题
- 说几个电影再说几个事