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

    52 高精度乘法

    作者: Turbo时间限制: 1S章节: 基本练习(数组)

    问题描述 :

      在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
      现在输入两个整数,请输出它们的乘积。

    输入说明 :

      两行,每行一个正整数,每个整数不超过10000位

    输出说明 :

      一行,两个整数的乘积。

    输入范例 :
    10000
    234
    输出范例 :
    2340000

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    int main()
    {
    	string str1, str2;
    	cin >> str1 >> str2;
    	int len1 = (int)str1.length();
    	int len2 = (int)str2.length();
    	int *p = new int[len1 + len2]();//数组初始化
    	reverse(str1.begin(), str1.end());
    	reverse(str2.begin(), str2.end());
    	for (int i = 0; i < len1; i++)
    	{
    		for (int j = 0; j < len2; j++)
    		{
    			p[i + j] += (str1[i] - '0')*(str2[j] - '0');
    		}
    	}
    	for (int i = 0; i < len1+ len2; i++)
    	{
    		p[i + 1] += p[i] / 10;
    		p[i] %= 10;
    	}
    	int len = len1 + len2 - 1;
    	while (len>=0&&p[len] == 0)
    	{
    		len--;
    	}
    	if (len < 0)
    		cout << 0 << endl;
    	else
    	{
    		len++;
    		reverse(p, p + len);
    		for (int i = 0; i < len; i++)
    		{
    			cout << p[i];
    		}
    		cout << endl;
    	}
    	return 0;
    }
    
    Yesterday is history,tomorrow ismystery,but today is a gift!That why it is called Present!
  • 相关阅读:
    堆排序
    jdk8 永久代变更
    oracle 区分大小写遇到的坑
    日志统计分析
    zookeeper 服务挂掉重启后,dubbo 服务是不会自动重新注册上的
    代码质量管理
    快速排序算法
    python flask 项目结构
    项目架构
    JS中的循环---最全的循环总结
  • 原文地址:https://www.cnblogs.com/VictorierJwr/p/12864701.html
Copyright © 2011-2022 走看看