大数运算
文章平均质量分 63
初见LDF
我就是我
展开
-
大数运算(4)——大数乘法
首先说一下乘法计算的算法,从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,记录结果,之后,用第二位相乘,记录结果并且左移一位,以此类推,直到计算完最后一位,再将各项结果相加。得出最后结果。计算的过程基本上和小学生列竖式做乘法相同。为编程方便,并不急于处理进位,而将进位问题留待最后统一处理。ans[i+j] = a[i]*b[j];原创 2016-08-25 19:01:03 · 22567 阅读 · 20 评论 -
大数运算(6)——大数阶乘(求位数)
对于比较大的数,求这个数的阶乘的位数的方法:第一种:lg(N!)=[lg(N*(N-1)*(N-2)*......*3*2*1)]+1 =[lgN+lg(N-1)+lg(N-2)+......+lg3+lg2+lg1]+1用C语言实现:#include#includeint main(){ int n; double sum=0; scanf("%d原创 2016-09-01 21:19:56 · 2720 阅读 · 0 评论 -
大数运算(5)——大数除法(取模、取余)
有关于大数除法的运算可以大致分为两种:一种是求商,另一种是取余。有两个大整数a和b,当a==b时,a/b==1,余数是0。(a!=0,b!=0) 当a>b时,a/b>=1,余数需要通过计算求得。 当a而我们经常需要求的便是当a>b,这种情况原创 2016-08-30 16:15:39 · 27130 阅读 · 4 评论 -
大数运算(8)——大数幂运算
幂的实现是最为简单的了,因为有了前面的算法做铺垫,就是调用乘法函数,来循环去自乘,幂指数相应减1,直到幂指数变为0时结束。下面是C语言代码实现:原创 2016-09-03 21:31:39 · 10084 阅读 · 8 评论 -
大数运算(7)——大数阶乘(求阶乘)
对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值。这时候,我们要通过字符串的方法,来进行阶乘的运算。当然,需要注意的是:我们所求一个数的阶乘,这个数是在int范围内的,5000的阶乘位数是16326位。其方法是:首先,我们是可以先求一定范围内的最大原创 2016-09-01 21:22:12 · 41463 阅读 · 18 评论 -
大数运算(1)——大数储存
int (16位) -32768~32767(注:现在大多数的编译器的int型是32位的 也就是说跟long型的大小一样)long long或__int64(64位) -9223372036854775808~9223372036854775807float(32位) 精确到小数点后6~7位double (64位) 精确到小数点后15~16位(注:平时做题时 都把浮原创 2016-08-25 11:57:21 · 3334 阅读 · 0 评论 -
大数运算(2)——大数加法
/*大数加法的中心思想就是:模拟人工列竖式算加法的方法。先从最低位开始相加,判断是否进1,一直到最高位。例如:求12545642233+278545的和,该怎么算?是这样的: 3 3 2 2 4 6 5 4 5 2 1 0+ 2 7 8 5 4 5 0 0 0 0 0 0———————————————— 5原创 2016-08-25 16:57:33 · 1956 阅读 · 2 评论 -
大数运算(3)——大数减法
大数的减法与大数加法的方法有相似之处的,都是模拟人工运算的,从最低位开始运算,一直到最高位。其方法是:首先,要判断减数和被减数哪一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;两数位数长度相等时,最好比较一下哪一个数字大,否则负号处理会很繁琐,用大的减去小的,最后加上负号;其次,处理每一项时要,如果前一位相减有借位,就先减去上一位的借位,无则不减;再去判原创 2016-08-25 17:12:07 · 3776 阅读 · 2 评论