zoukankan      html  css  js  c++  java
  • 算法提高 高精度乘法

     
    时间限制:1.0s   内存限制:256.0MB
    提交此题    
    问题描述
      在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
      现在输入两个整数,请输出它们的乘积。
    输入格式
      两行,每行一个正整数,每个整数不超过10000位
    输出格式
      一行,两个整数的乘积。
    样例输入
    99
    101
    样例输出
    9999
    数据规模和约定
      每个整数不超过10000位
    #include <iostream>
    #include <cmath>
    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;i<a.length();)
    	e[l--]=a[i++]-'0';
    	for(int j=0,m=b.length() -1;j<b.length();)
    	d[m--]=b[j++]-'0';
    	if(a.length()>b.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<len;i++)//短的控制外层循环,每一个和内层循环的相乘 
    		{
    		    int	k=i;
     			for(int j=0;j<max;j++)
    			{
    				int s=c[k]+e[i]*d[j];
    				c[k]=s%10;
    				c[k+1]=s/10+c[k+1];
    				k++;
    			 } 
    		 } 
    	}
    		else 
    		{
    			for(int i=0;i<len;i++)//短的控制外层循环,每一个和内层循环的相乘 
    		{
    		    int	k=i;
    			for(int j=0;j<max;j++)
    			{
    				int s=c[k]+d[i]*e[j];
    				c[k]=s%10;
    				c[k+1]=s/10+c[k+1];
    				k++;
    			 } 
    		 } 
    		}
    		
    		for(int x=20000;x>=0;x--)
    	   {
    		if(c[x]!=0)
    		{
    		u=x;
    		break;	
    		}
    		
    	   }
    	for(int o=u;o>=0;o--)
    	{
    		cout<<c[o];
    	   
         }
    	return 0;
    }
    

      

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

      

  • 相关阅读:
    PIL PNG格式通道问题的解决方法
    opencv-python 学习初探2 去图片水印
    Appium、selenium与Robot Framework
    性能监控0
    XML
    Python3 读取和写入excel
    Python识别字符型图片验证码
    python进程、线程、协程
    算法和程序
    Zigbee
  • 原文地址:https://www.cnblogs.com/jweie/p/8385534.html
Copyright © 2011-2022 走看看