C#实现大数相加
在C#中,我们经常需要表示整数。但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数。
如果我们需要表示更大的数,就需要用到一定的算法来完成。
这次,我给大家分享一下C##的大数运算之加法。
代码只考虑了正数的整数加法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个加数");
string oneNum = Console.ReadLine();
Console.WriteLine("请输入第二个加数");
string twoNum = Console.ReadLine(); string result = TwoBigNumAdd(oneNum, twoNum);
Console.WriteLine(result);
} static string TwoBigNumAdd(string a, string b)
{
int k = ;
List<int> array = new List<int>();
List<int> one = new List<int>();
List<int> two = new List<int>(); //将两个数处理成相同长度的字符串,短的小的数字前面补0
for (int i = ; i < (a.Length > b.Length ? a.Length : b.Length); i++)
{
if (i >= a.Length)
one.Insert(i - a.Length, );
else
one.Add(int.Parse(a[i].ToString()));
if (i >= b.Length)
two.Insert(i - b.Length, );
else
two.Add(int.Parse(b[i].ToString()));
} //array集合用于存储相加的和,所以长度最大也只会比最大的数长度长1,刚开始全部存0
for (int i = ; i <= (a.Length > b.Length ? a.Length : b.Length); i++)
{
array.Add();
} //从低位往高位每位开始相加,如果相加 >=10 则进1取余
for (int i = (a.Length > b.Length ? a.Length : b.Length) - ; i >= ; i--)
{
array[i + ] += (one[i] + two[i]) % ;
k = (one[i] + two[i]) / ; array[i] += k;
} //如果首位为0,则移除
if (array[] == )
{
array.RemoveAt();
} //将集合转换成字符串返回
StringBuilder result = new StringBuilder();
for (int i = ; i < array.Count; i++)
{
result.Append(array[i]);
}
return result.ToString();
}
}
}
C#实现大数相加的更多相关文章
- hdu acm-1047 Integer Inquiry(大数相加)
Integer Inquiry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 用字符串模拟两个大数相加——java实现
问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求.可以使用字符串来表示大数,模拟大数相加的过程. 思路: 1.反转两个字符串,便于从低位到高位相加和最高位 ...
- 随机数组&大数相加
随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中 一, 设计思路: 先生成随机数数组,再将数组保存在一个字符串中,然后将数组各数字加和, ...
- java-两个大数相加
题目要求:用字符串模拟两个大数相加. 一.使用BigInteger类.BigDecimal类 public static void main(String[] args) { String a=&qu ...
- POJ 1503 Integer Inquiry(大数相加,java)
题目 我要开始练习一些java的简单编程了^v^ import java.io.*; import java.util.*; import java.math.*; public class Main ...
- 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过
杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...
- hdu1002大数相加
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 基于visual Studio2013解决C语言竞赛题之1077大数相加
题目 解决代码及点评 /************************************************************************/ /* ...
- 大数相加(类似杭电acm1002)
/*输入两个非常大的整数(完全超出了int.long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...
随机推荐
- 代码二次封装-xUtils(android)
通常我们会引用很多lib 而且会出现lib 与我们的功能仅仅差一点点 这种情况我们最好不要去改动源代码 而是进行二次封装 举例我使用 xUtils的二次封装 此处说明我是搞ios的 这个是androi ...
- Angular External js library calling Document.Ready
https://stackoverflow.com/questions/51094841/angular-external-js-library-calling-document-ready Step ...
- 用C++画光(二)——矩形
在上篇文章的基础上,做了许多调整,修复了许多BUG.在解决bug的过程中,我逐渐领悟到一个要领:枯燥地一步步调试太痛苦了,找不到问题的根源!所以我选择将中间结果打到图片上.如: (注意,里面的点是我随 ...
- Build IKAnalyzer With Solr 5.1.0
中文分詞裡IKAnalyzer和結巴是大家比較常用的分詞器, 不過IKAnalyzer已經很久沒有更新了, IKAnalyzer中文分词器V2012使用手册也跟IK Analyer 2012-FF H ...
- git 命令删除远程分支
删除 服务器上的分支: git push origin :sxz 分支名 注意 origin 后面的空格:
- Spring Boot干货系列:(四)Thymeleaf篇
Spring Boot干货系列:(四)Thymeleaf篇 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boo ...
- .NET项目web自动化测试实战——Selenium 2.0
PS:这次用公司的项目来练手,希望公司不会起诉我,因为我绝对是抱着学习的态度,没有任何恶意.仅供交流学习. 该项目是基于SharePoint平台所开发的门户网站,为了切身感受一下Selenium 2. ...
- js 笔记 数组(对象)
一.javascript push 的元素为指针 var data = {"test":{"201308":"23","20130 ...
- [shell]shell脚本传入不固定参数的写法,如--help等
最近在调试一个wifi模块,需要传一些不固定的参数,一下一个参数解析的函数可以搞定这个事情,里面内容好多部分是从一个example中剽窃而来(窃喜) #!/bin/bash # writen by a ...
- Akka 编程: 什么是Actor
上一篇我们简介了Actor系统.说明了Actor之间存在着层次关系,它也是构成Actor应用的最主要的单位. 本篇介绍Actor本身的一些基本概念.一个Actor包括了State(状态),Behavi ...