超大正整数加法与乘法最笨方法实现

大整数类-实现加减法 上次写了一个“无符号大整数加法”,是比较容易的,这次实现了完整的大整数的加减法,支持有符号的!不过实现起来感觉不是很顺畅,感觉可以优化的地方还很多,先贴一下代码,日后再来优化。另,思路主要是模拟手算的过程,计算方式在注释里有说清楚。 阅读详情

using System.Text;

private string AddNumber(string numA, string numB)
  {
   int lenA=0, lenB=0;
   int lenI=0, intTen=0;
   int intA=0, intB=0;
   
   StringBuilder result=new StringBuilder("");
   lenA=numA.Length;
   lenB=numB.Length;
   if(lenA>lenB)
    lenI=lenA;
   else
    lenI=lenB;
   for(int i=0; i<lenI; i++)
   {
    if(i<lenA)
     intA=Convert.ToInt16(numA.Substring(lenA-i-1,1));
    else
     intA=0;
    if(i<lenB)
     intB=Convert.ToInt16(numB.Substring(lenB-i-1,1));
    else
     intB=0;
    int temp=intA+intB+intTen;
    result.Insert(0,Convert.ToString((int)temp%10));
    intTen=(int)temp /10;
   }
   if(intTen>0)
    result.Insert(0,Convert.ToString(intTen));
   return result.ToString();
  }

  private string MultiNum(string NumA, string NumB)
  {
   int lenA=0, lenB=0;
   int lenI=0;

   string result="0";
   string AddResult="0";
   int Dig=0;

   lenA=NumA.Length;
   lenB=NumB.Length;
   if(lenA>lenB)
   {
    lenI=lenB;
    for(int i=0; i<lenI; i++)
    {
     AddResult="0";
     Dig=Convert.ToInt16(NumB.Substring(lenB-i-1,1));
     for(int j=0; j<Dig; j++)
      AddResult=AddNumber(NumA,AddResult);
     for(int k=0; k<i; k++)
      AddResult=AddResult + "0";
     result=AddNumber(AddResult,result);
    }
   }
   else
   {
    lenI=lenA;
    for(int i=0; i<lenI; i++)
    {
     AddResult="0";
     Dig=Convert.ToInt16(NumA.Substring(lenA-i-1,1));
     for(int j=0; j<Dig; j++)
      AddResult=AddNumber(NumB,AddResult);
     for(int k=0; k<i; k++)
      AddResult=AddResult + "0";
     result=AddNumber(AddResult,result);
    }
   } 
   return result;
  }

  private void button2_Click(object sender, System.EventArgs e)
  {
   DateTime dtm1=DateTime.Now;
    Console.WriteLine(AddNumber("1225225236523456889","1255625622452552"));
   Console.WriteLine(dtm1.Millisecond + " " + DateTime.Now.Millisecond );   
  }

  private void button3_Click(object sender, System.EventArgs e)
  {
   DateTime dtm1=DateTime.Now;
   string test="1";
    test=MultiNum("453123123156341231651231563121563151213513422","1254564231541321541385435453453124563131541534313543");
    Console.WriteLine(test);
   Console.WriteLine(dtm1.Millisecond + " " + DateTime.Now.Millisecond );   
  }

超长正整数的加法C++ 2.以较短的超长整数为基准,从低位到高位,对应位转换成数字后相加,再加上前一位相加的进位,得到的和模上10再转换为字符即为当前位,得到的和整除10即为当前位的进位。1.用字符串输入两个超长整数,分别存放在两个字符串中,每一位对应一个字符串中的字符。输出只有一行,是两个长整数的运算结果,从高到低依次输出各位数字。从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。编写程序实现两个超长正整数(每个最长80位数字)的加法运算。4.将结果数组反序输出(去掉高位多余的0)。 阅读详情

相关推荐

自己实现超大整数加法运算

NULL 博文链接:https://nisen.iteye.com/blog/804095

C/C++_大正整数的加法运算代码实现

#include<iostream> #include<string> using namespace std; int main(){ string a, b; int c[2000]; int q = 1; int p; cin >> p; //输入次数 for(int j = 0; j < p; j++) { cin >> a >> b; re

Rocky Ding相信人工智能、数据科学、商业逻辑、金融工具、终身成长以及顺应时代的潮流会赋予我们超能力。 650

C++大整数运算

用C++写的大整数运算,包含加减乘除以及求余

超长正整数的加法

然而,当面对超长正整数(即超出计算机内置整数类型表示范围的整数)时,传统的整数加法方法便不再适用。因此,实现超长正整数的加法就需要一些特殊的技巧和算法。在这个优化后的示例代码中,我们添加了对空字符串和零值的特殊处理,并在逐位相加时直接处理了两个输入字符串的剩余位数。此外,我们还添加了一个去除前导零的步骤,以确保结果字符串的简洁性。在实现超长正整数的加法时,除了基本的算法设计外,我们还需要考虑一些性能优化和边界情况的处理。超长正整数的加法算法可以借鉴手工进行大数加法的思路。

Weirdo的博客 1419

大整数加减乘除和任意数任意进制转换的 C语言实现

大整数加减乘除,写的着实挺辛苦的,C语言,支持任意进制转换

超长整数的加法

使用C语言编写的超长整数加法,可以实现100以内的超长整数的加法的运算。

c++大整数加法实现

设计实现"HugeInteger"大整数类,实现大整数的加法,输入和输出功能。能够满足以下程序的运行 #include<iostream> #include<array> #include<string> using namespace std; class HugeInteger { private: int n[101]; public: HugeInteger(); HugeInteger(int n1); HugeInteger(string n1)

VAEaaaa的博客 5222

实现任意大整数的加减运算

实现任意大整数的加减运算! input(&num1, &num2); num3= sum(&num1, &num2); output(&num1); if(num2.flag==0) printf("%c", '+'); else printf("%c", '-'); output(&num2); printf("= "); if(num3.flag==1) printf("%c", '-'); output(&num3);

C语言——动态数据结构,超长正整数的加法 请设计一个算法完成两个超长正整数的加法。

C语言——动态数据结构

WZY22502701的博客 1146

ParallelsDesktop 安装 CentOS-6.9-x86_64-minimal 教程

安装参考 tools没做 想安装的可以参考这个 mac 本机环境: 系统:macOS Catalina version 10.15.6 虚拟机软件:parallels Desktop 15 for Mac( Parallels Desktop-15.1.4(47270)) Centos镜像: CentOS-6.9-x86_64-minimal.iso https://mirrors.aliyun.com/centos-vault/6.8/isos/x86_64/ http://vault.centos.

爱吃鱼的小明的博客 955

5G时代必知:LDPC与Polar码实战解析(附MATLAB仿真代码)

本文深入解析5G时代核心信道编码技术LDPC码与Polar码的原理差异及性能表现,通过MATLAB仿真代码展示其在实际通信系统中的应用。LDPC码适用于大数据块高速传输,而Polar码在小数据块低时延场景表现优异,帮助开发者优化5G系统设计。

sugar的博客 642

ACM大数取模巧解:同余定理与逐位计算实战

模运算(Modular Arithmetic)是计算机科学和数学中的基础概念,它研究整数除以某个正整数的余数性质。其核心原理基于同余定理,即两个整数如果除以同一个正整数得到的余数相同,则它们对于该模数同余。这一原理在算法设计中具有重要技术价值,能够将大数运算转化为可管理的规模,避免数值溢出,并显著提升计算效率。在工程实践中,模运算广泛应用于哈希函数设计、数据校验、密码学(如RSA加密)以及竞赛编程中的大数处理等场景。本文以一道经典的ACM竞赛题为例,深入解析如何利用模运算的分配律,通过逐位计算高效解决大数取

weixin_32075843的博客 336

FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置

3、license安装根据,下面的提示进行,跟随setting up the license server on a host教程操作。1、从官网下载Libero IDE v9.2(如下图中的Libero IDE v9.2 software)4、下载完成license解压包后还需要下载 Daemons license ,地址如下。(2)第一行并不是在内填写,而是直接用您电脑名替换掉(1)修改license.bat前四行是,其务必保持和案例位置相同(避免出错)............

JasonK的博客 4296

实现大整数类的加法

首先我们需要定义一个类,它支持传入的是整形,字符串,同时默认参数为0; 其次我们需要重载运算符+,=,重载输出流<<,同时重载输出流时,我们需要用friend定义友元,执行cout<<类的语句; 为了代码的简洁性,我们可以将整形转为字符串来储存。 代码如下 #include <iostream> #include <string> using namespace std; class HugeInteger{ private: string str;

聂泽宇的blog 1396

Fabric学习笔记(一)- Centos 7下的Fabric 2.3.2环境搭建

一、 环境准备 (一)、在VMware Workstation 15 安装一个Centos 7的虚拟环境,切换到图形化界面: 参考文章链接:Centos 7切换图形化界面 其中可能在yum groupinstall "X Window System"时会报错:Cannot find a valid baseurl for repo: base/7/x86_6,参考这篇文章即可:安装图形化界面报错解决 (二)、打开终端,安装所需的库: 切换root用户,输入命令:su root yum更新,输入命令:y

茕夜 2611

别再折腾端口了!Kali Nethunter Kex 图形化桌面连接失败的真正原因与一键修复(附Termux命令)

本文深入分析了Kali Nethunter Kex图形化桌面连接失败的真正原因,包括端口配置变更、依赖缺失和权限问题,并提供了一键修复方案和Termux命令。通过详细的诊断步骤和优化配置,帮助用户快速恢复Kex功能,提升移动安全测试效率。

weixin_42530732的博客 417

模拟超大整数加法java_基于Java的大整数运算的实现(加法,减法,乘法)学习笔记...

大整数,顾名思义就是特别大的整数。一台64位的机器最大能表示的数字是2的64次方减一:18446744073709551615java语言中所能表示的整数(int)最小为-2147483648public classtest {public static voidmain(String[] args) {System.out.println(Integer.MIN_VALUE);}}最大为2147...

weixin_30405507的博客 421

C# 与华中数控设备通信:数控机床自动化控制与实时监测系统

华中数控系统与C#通信开发指南 核心要点 通信基础 支持串口(RS232/RS485)和以太网两种连接方式 协议选择:通用Modbus协议或华中自定义HNC协议 关键数据映射表明确各参数对应的寄存器地址和功能码 系统架构 四层架构:设备层→通信层→业务层→应用层 包含实时数据采集、指令下发、状态监控、异常处理全流程 支持Modbus和HNC协议动态切换 代码实现 串口通信使用NModbus库简化开发 提供连接管理、数据读取、指令下发完整示例 包含异常处理和超时重连机制 应用价值 实现数控机床远程监控和自动化

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2018

java 进行超大整数的加减乘除四则运算(自己实现的BigInteger)

public class MyBigInteger { private StringBuffer data; public MyBigInteger(){ data = new StringBuffer("0"); } public MyBigInteger(String str){ data = new StringBuffer(str); } public My...

a823837282的博客 2446

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1191

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2654

超长正整数加法

编写程序实现两个超长正整数(每个最长80位数字)的加法运算。

大前端程序员的自我修养 6047

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

编写程序实现两个超长正整数(每个最长80位数字)的加法运算。_万字长文!位运算面试看这篇就够了!...

祝大家五一快乐。今天是小浩算法 “365刷题计划” 位运算超长 - 整合篇。估计五一期间,大家也没有什么心思好好做题。所以我就把之前已经出过的位运算系列,进行了一次整合。整合工作很漫长,我对其中的所有图片都重新进行了绘制,同时也砍去了一些不适的内容。以下是最终整合后的目录,列出的全部内容都应该进行掌握:位运算基础位运算的奇淫技巧两数之和二的幂一的个数只出现一次的数字Ⅰ只出现一次的数字Ⅱ0...

weixin_39756696的博客 2029

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: Cisco - NAT FAQ
下一篇: Excel2000工作表最大行数与列数
limit
博客等级 码龄25年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值