首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
高精度乘法
时间:
2015-05-26 12:25:55
阅读:
137
评论:
0
收藏:
0
[点我收藏+]
标签:
(转)
/*
高精度乘法
输入:两行,每行表示一个非负整数(不超过10000位)
输出:两数的乘积。
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <memory.h>
#define MAX 10001
int high_precision(int *sum,int *a,int *b,int a_len,int b_len)
{
int i,j;
memset(sum,0,sizeof(sum));
int sum_len = 0 ;
for(i=1;i<=a_len;i++) /*用数组模拟运算*/
for(j=1,sum_len=i-1;j<=b_len;j++)
sum[++sum_len] += b[j]*a[i];
for(i=1;i<=sum_len;i++)/*进位处理*/
if(sum[i] >= 10)
{
if(sum[sum_len] >= 10)
sum_len++;
sum[i+1] += sum[i]/10;
sum[i] %= 10;
}
return sum_len;
}
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);
}
int main(int argc,char *argv[])
{
int a[MAX]= {0},b[MAX]= {0},sum[MAX*2]= {0};
int a_len=0,b_len=0,sum_len=0;
int i,j;
char c_a[MAX],c_b[MAX],c_sum[MAX*2];
scanf("%s%s",c_a,c_b);
a_len = strlen(c_a);
b_len = strlen(c_b);
for(i=1,j=a_len-1;i<= a_len;i++,j--)
a[i] = c_a[j] - ‘0‘;
for(i=1,j=b_len-1;i<= b_len;i++,j--)
b[i] = c_b[j] - ‘0‘;
sum_len = high_precision(sum,a,b,a_len,b_len) ;
for(i=sum_len;i>=1;i--)
printf("%d",sum[i]);
putchar(‘\n‘);
multiply(c_a,c_b,c_sum);
printf("%s\n",c_sum);
return 0 ;
}
复制
去Google翻译
翻译结果
高精度乘法
标签:
原文地址:http://www.cnblogs.com/yskyskyer123/p/4530110.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!