【C语言】大数相乘 深藏阁楼爱情的钟 2022-08-13 00:58 188阅读 0赞 今天抽空复习了一下,用C语言实现的大数相乘的相关算法。 算法代码如下: <span style="font-size:18px;"># include<stdio.h> # include<string.h> # include<malloc.h> void multiply(char* a,char* b,char* c) { int i,j,ca,cb,* s; ca = strlen(a); cb = strlen(b); s = (int*)malloc(sizeof(int)*(ca+cb)); for ( i = 0; i < ca+cb; i++) { s[i] = 0; } for ( i = 0; i < ca; i++) { for ( j = 0; j < cb; j++) { s[i+j+1] += (a[i]-'0')*(b[j]-'0'); } } for ( i = ca+cb-1; i >= 0; i--) { if ( s[i] >= 10) { s[i-1] += s[i]/10; s[i] %= 10; } } i = 0; while ( s[i] == 0) { i++; } for ( j = 0; i < ca+cb; i++,j++) { c[j] = s[i] + '0'; } c[j] = '\0'; free(s); }</span> 这段程序的意思理解如下: 用字符数组存储大数字, a 和 b 数组分别代表两个相乘的数字,c 是最终的返回结果。 这段程序通过模拟我们运算的过程达到运算的目的。最精髓的地方在于 s\[i+j+1\] += (a\[i\]-'0')\*(b\[j\]-'0'); 在我们做数字运算的时候,可以参考一下过程: 1 2 3 X 1 2 3 4 ————————————————————— 4\*1 4\*2 4\*3 3\*1 3\*2 3\*1 2\*1 2\*2 2\*3 1\*1 1\*2 1\*3 ————————————————————— 之后判断大于 10 进位,加和,得到最终的结果。 疑问:为什么最多就是 i+j 位数呢? 两个数相乘 一个 n 位 \* m 位 结果的位数为 \[n+m-1,n+m\] 而之所以从 1 开始是为了预留最高位。
相关 大数相乘(C语言) 大数相乘 输入两个很大的数相乘得出结果。 例如: 输入: 86164546164196136413315 14654561525131314584561 一时失言乱红尘/ 2022年12月27日 02:29/ 0 赞/ 127 阅读
相关 大数相乘 一、背景 最近在看算法的时候发现了一个问题,我们都知道方法的形参是要指定类型的,假如有以下方法 public int example(int a,int b){ 傷城~/ 2022年09月30日 13:55/ 0 赞/ 209 阅读
相关 大数相乘 参考地址:[http://www.cnblogs.com/heyonggang/p/3599857.html][http_www.cnblogs.com_heyonggang_ 悠悠/ 2022年08月20日 06:29/ 0 赞/ 190 阅读
相关 【C语言】大数相乘 今天抽空复习了一下,用C语言实现的大数相乘的相关算法。 算法代码如下: <span style="font-size:18px;"> include<st 深藏阁楼爱情的钟/ 2022年08月13日 00:58/ 0 赞/ 189 阅读
相关 大数相乘 无意中看到一个华为面试题,使用代码计算[1234567891011121314151617181920\2019181716151413121110987654321][123 系统管理员/ 2022年08月11日 20:29/ 0 赞/ 194 阅读
相关 大数相乘 题目:请使用代码计算1234567891011121314151617181920\2019181716151413121110987654321。 答: ![复制代码][ Bertha 。/ 2022年08月05日 08:54/ 0 赞/ 205 阅读
相关 大数相乘 在这之前我们先来了解一下Java 中每种基本数据类型所占存储空间的大小。其中 1Byte = 8bit。 <table> <tbody> <tr> <th> 朱雀/ 2022年06月02日 02:36/ 0 赞/ 253 阅读
相关 大数相乘 设X和Y是n位的二进制整数,现在要计算X\Y的结果 将a和b分为两段,每段长均为总长的1/2, ![20180329214901958][] 拼搏现实的明天。/ 2022年05月28日 05:06/ 0 赞/ 215 阅读
相关 大数相乘 题目 编写两个任意位数的大数相乘的程序,给出计算结果。比如: > 题目描述: 输出两个不超过100位的大整数的乘积。 > 输入: 输入两个大整数,如1234567 今天药忘吃喽~/ 2022年05月23日 11:23/ 0 赞/ 336 阅读
相关 大数相乘 def fun(num1,num2): num1 type str num2 type str a = map(int, 落日映苍穹つ/ 2021年10月24日 01:48/ 0 赞/ 330 阅读
还没有评论,来说两句吧...