首页 > 编程语言 >c++高精度计算-大整数相乘

c++高精度计算-大整数相乘

时间:2024-06-30 19:57:38浏览次数:18  
标签:高精度 int c++ 数的积 相乘 100 输入 乘法

例题-信奥赛1307:

【例1.3】高精度乘法

题目描述:

输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。

输入:

输入两个高精度正整数M和N。

输出:

求这两个高精度数的积。

输入样例:

36

3

输出样例:

108 

做题思路:

学习乘法的朋友大概对加减法都有一定的了解,我就不多赘述了,如果不知道也没关系,我的主页可以找到。乘法和加减法最大的不同,就是不只是对应位置上做数学运算,是各个位数与另一数字的各个位数都要相乘,这就需要运用双重循环,实现m个数字乘n个数字。

举个例子:

具体代码如下:

#include <bits/stdc++.h>
using namespace std;
int main(){
    char m[100],n[100];
    int a[100]={0},b[100]={0},c[10000]={0};
    scanf("%s%s",m,n);
    int lm=strlen(m);
    int ln=strlen(n);
    for(int i=0;i<lm;i++){
    	a[lm-1-i]=m[i]-'0';//将字符数组m倒置赋给整型数组a 
	}
	for(int i=0;i<ln;i++){
    	b[ln-1-i]=n[i]-'0';//将字符数组n倒置赋给整型数组b 
	}
	for(int i=0;i<lm;i++){
		int t=0;//用于存储进位 
		for(int j=0;j<ln;j++){
			int s=a[i]*b[j]+t+c[i+j];//当前乘积+上次乘积进位+该位置原数 
			t=s/10;
			c[i+j]=s%10;
		}
		c[i+ln]=t;//每轮循环最后进位 
	}
	int l=lm+ln+1;
	while(c[l]==0&&l>0){
		l--;//删除前导0 
	}
	for(int i=l;i>=0;i--){
		printf("%d",c[i]);//倒序输出 
		
	}
}

标签:高精度,int,c++,数的积,相乘,100,输入,乘法
From: https://blog.csdn.net/2401_83620240/article/details/140065429

相关文章

  • 【保姆级教程+配置源码】在VScode配置C/C++环境
    目录一、下载VScode1.在官网直接下载安装即可2.安装中文插件二、下载C语言编译器MinGW-W64三、配置编译器环境变量1.解压下载的压缩包,复制该文件夹下bin目录所在地址2.在电脑搜索环境变量并打开3.点击环境变量→选择系统变量里的Path→点击编辑按钮4.点击新建5......
  • item7 Moving to Modern C++**
    第3章移步现代C++CHAPTER3MovingtoModernC++说起知名的特性,C++11/14有一大堆可以吹的东西,auto,智能指针(smartpointer),移动语义(movesemantics),lambda,并发(concurrency)——每个都是如此的重要,这章将覆盖这些内容。掌握这些特性是必要的,要想成为高效率的现代C++程序员需......
  • 【C++】 ——【模板初阶】——基础详解
    目录1.泛型编程1.1泛型编程的概念1.2泛型编程的历史与发展1.3泛型编程的优势1.4泛型编程的挑战2.函数模板2.1函数模板概念2.2函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则2.6函数模板的特化2.7函数模板的使用注意事项2.......
  • NzN的C++之路--拷贝构造函数&&赋值运算符重载
    目录Part1拷贝构造函数一、概念二、特征Part2赋值运算符重载一、运算符重载二、赋值运算符重载三、前置++和后置++重载Part3const成员Part4 取地址及const取地址操作符重载 Part1拷贝构造函数一、概念        拷贝构造函数:只有单个形参,该形参......
  • SSM-学情分析系统-56772(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP
    学情分析系统摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于学情分析系统当然也不能排除在外,随着网络技术的不断成熟,带动了学情分析系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这......
  • 基于SpringBoot的高校大学生学科竞赛管理系统+53135(免费领源码)可做计算机毕业设计JAVA
    springboot高校大学生学科竞赛管理系统的设计与实现摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设高校大学生学科竞赛管理系统。......
  • 【C++】【MFC】MFC多文档框架
    相较于单文档架构,多文档基本架构则是有起码两个框架窗口,与其相对应的也会有两个文档类进行数据管理。参与架构的类:CMDIFrameWnd/CMDIChildWnd/CWinApp/CView/CDocument需要用的类:CDocTemplate(文档模板类)|->CMultiDocTemplate(多文档模板类)CDocM......
  • UE4 C++ 随机生成迷宫地图
    参考参考原理就是利用一个房间的三个方向(排除进入口)出口(可以减少,即设置墙壁),从而获得下一次房间生成的位置,其中涉及到对于多个房间重叠,生成结束后如何对缺口进行修补等功能实现RoomBaseActor该Actor类是后续创建房间的基类,如果想要固定所有房间形状即只改变出口个数,那么在该类......
  • C/C++ const 和 volatile 关键字要点总结
    const 和 volatile 是C/C++的两个关键字,各有不同的用途和要点。constconst 关键字用于声明常量,一旦声明为常量,其值就不能被修改。const 可以用于各种数据类型,也包括指针、函数参数、函数返回值和类成员函数。声明常量:声明为 const 的常量,在初始化后不能被修改。co......
  • C++ 面向对象高级开发 5、操作符重载与临时对象
    C++里面操作符就是一种函数。 任何成员函数都有一个this->pointer谁调用这个函数,就指向谁。      tempobject(临时对象)typename(); 没有名称即是临时对象。一般人少用,但标准库用的很多。   质疑精神,即使是标准库也有可以提高的地方。 ......