高精度乘法
来源:互联网 发布:redis排序 java 编辑:程序博客网 时间:2024/06/05 09:40
#include <stdio.h>
#include <string.h>
#include<iostream>
using namespace std;
char a[101], b[101]; //输入的两个正整数(字符形式)
int len_a, len_b; //输入的正整数长度
int ai[101], bi[101]; //输入的两个正整数(以整数形式存储每一位)
int temp[202]; //每一位乘法的中间结果
void reverse( char s[ ], int si[] ) //以逆序顺序存放大数中的各位数(整数形式)
{
int len = strlen(s);
for( int i=0; i<len; i++ )
si[len-1-i] = s[i]-'0';
}
int main( )
{
int i, j;
while( scanf( "%s", a ) != EOF )
{
scanf( "%s", b );
len_a = strlen(a); len_b = strlen(b);
reverse(a, ai); reverse(b, bi);
memset( temp, 0, sizeof(temp) );
for( i=0; i<len_b; i++ ) //用大整数b的每位去乘大整数a
{
int start = i;//得到的中间结果跟大整数b中的位对齐
for( j=0; j<len_a; j++ )
{
temp[start++] += ai[j]*bi[i];
}
}
for( i=0; i<202; i++ )//低位向高位进位
{
if( temp[i]>9 )
{
temp[i+1] += temp[i]/10;
temp[i] = temp[i]%10;
}
}
for( i=201; i>=0; i-- )//求乘积的长度
{ if( temp[i] ) break; }
for(;i>=0;i--)
cout<<temp[i];
cout<<endl;
}
return 0;
}
0 0
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 程序的内存分配
- shell脚本如何获取当前时间
- 欢迎使用CSDN-markdown编辑器
- Lucene入门详解(一)
- 我理解的javascrpit闭包
- 高精度乘法
- 排队买票-SSL 1464
- 伪类和伪元素
- SpringMVC 自动绑定数据
- Win7,64位,Python使用reportlab画图并生成为pdf文件
- Android第三方支付——微信支付
- C实现折半插入排序
- Linux crontab定时执行任务 命令格式与详细例子
- request的请求转发和response请求重定向