算法提高 高精度乘法

 
时间限制:1.0s   内存限制:256.0MB
提交此题    
问题描述
  在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
  现在输入两个整数,请输出它们的乘积。
输入格式
  两行,每行一个正整数,每个整数不超过10000位
输出格式
  一行,两个整数的乘积。
样例输入
99
101
样例输出
9999
数据规模和约定
  每个整数不超过10000位
#include 
#include 
using namespace std;
int main()
{
	string a;
	string b;
	int flag=2;
	int max;
	int len;
	int u;
	int c[20002]={0};
	int  e[10001];
	int  d[10001];
    cin>>a;
	cin>>b;
for(int i=0,l=a.length()-1;ib.length())//a的长度长一些 
	{
		len=b.length();
		flag=1;
		max=a.length();	
	}
	else//b 的长度长一些 
	{
	len=a.length();
	flag=0;
	max=b.length();
	}
	
	if(flag==0)
	{
		for(int i=0;i=0;x--)
	   {
		if(c[x]!=0)
		{
		u=x;
		break;	
		}
		
	   }
	for(int o=u;o>=0;o--)
	{
		cout<

  

这道题就是大数加法和阶乘结合在一起,
每一位依次相乘
最后加在一次
每一次都对结果取余数是当前的位数结果
/10是产生的进位

  

转载于:https://www.cnblogs.com/jweie/p/8385534.html

你可能感兴趣的:(c/c++)