zoukankan      html  css  js  c++  java
  • 大整数相乘

    /*功能:完成来个大整数的相乘*/
    /*
    解题思路:
    读入俩个大整数,将他们分别放在俩个字符串中,申明第三个字符串用来保存结果。
    其中涉及到字符和数字转化的技巧,具体实现请看代码。
    */
    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    int main()
    {
    	string str1,str2,tem;
    	int len1,len2,len3,i,j,m,n;
    	cout<<endl<<"      *******************该程序完成俩个大整数的相乘***********************"<<endl;
    	cout<<"输入第一个大整数:\n";
    	cin>>str1;
    	cout<<"输入第二个大整数:\n";
    	cin>>str2;
    	//分别求出俩个大整数的长度
    	len1=str1.size();
    	len2=str2.size();
    	//将位数高的字符串放到str1中,将位数低的字符串放到str2中
    	if(len1<len2)
    	{
    		tem=str1;
    		str1=str2;
    		str2=tem;
    		i=len1;
    		len1=len2;
    		len2=i;
    	}
    	//k中保存来至低位的进位,开始的时候应该为0
    	int k=0;
    	//str3中保存相乘后的结果,将str3声明为最大数字位数的二倍加2足够,其中最后一位用来作为标志位,保存的是'\0',以便读取的时候不会越界
    	len3=2*len1+2;
    	char *str3 = new char[len3];
    	//将str3中的内容清零
    	memset(str3,'0',len3);
    	str3[len3-1]=0;
    	//外层循环表示乘数,内层循环表示被乘数,用乘数的各位与被乘数相乘结果保存到str3中
    	for(i=len2-1;i>-1;i--)
    	{
    		//从str3最后一个数字位的前一位存放数字,最后一个数字位已经放上了0
    		len3=len3-1;
    		m=len3-1;
    		//拿出被乘数的每一位与该乘数位相乘
    		for(j=len1-1;j>-1;j--,m--)
    		{
    			int a1=str2[i]-'0';
    			int a2=str1[j]-'0';
    			int a3=str3[m]-'0';
    			n=(str2[i]-'0')*(str1[j]-'0')+(str3[m]-'0')+k;
    			if(n<10)
    			{
    				str3[m]=n+'0';
    				k=0;
    			}
    			else
    			{
    				str3[m]=n%10+'0';
    				k=n/10;
    			}
    		}
    		//在最后一次要将来自低位的进位加到str3中
    		while(k>10)
    		{
    			str3[m]=k%10+'0';
    			k=k/10;
    			m--;
    		}
    		str3[m]=k+'0';
    		k=0;
    	}
    	//以下功能是为打印服务的,若前几位是字符0,则不打印
    	i=0;
    	while(str3[i]=='0')
    	{
    		i++;
    	}
    	str3+=i;
    	cout<<"运算结果为:"<<str3<<endl;
    	return 0;
    }


  • 相关阅读:
    【webrtc】PTCPeerConnection(28)
    windows传文件到linux服务器--- secureCRT PK xftp
    Navicat premium查看数据库表中文注释的两种方式
    Jmeter 5.1实现图片上传接口测试
    查看服务器内存、CPU、网络等占用情况的命令--汇总
    AWS服务器上安全组端口设置和访问的问题
    linux服务器时间乱码问题解决
    连接linux的几款工具 简介
    服务器上build.xml文件乱码解决(亲测有效)
    jmeter通过ant执行时报错 jmeter.log not found
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3001457.html
Copyright © 2011-2022 走看看