在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#实现大数相加的更多相关文章

  1. hdu acm-1047 Integer Inquiry(大数相加)

    Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. 用字符串模拟两个大数相加——java实现

    问题: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求.可以使用字符串来表示大数,模拟大数相加的过程. 思路: 1.反转两个字符串,便于从低位到高位相加和最高位 ...

  3. 随机数组&大数相加

    随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中 一,      设计思路: 先生成随机数数组,再将数组保存在一个字符串中,然后将数组各数字加和, ...

  4. java-两个大数相加

    题目要求:用字符串模拟两个大数相加. 一.使用BigInteger类.BigDecimal类 public static void main(String[] args) { String a=&qu ...

  5. POJ 1503 Integer Inquiry(大数相加,java)

    题目 我要开始练习一些java的简单编程了^v^ import java.io.*; import java.util.*; import java.math.*; public class Main ...

  6. 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过

    杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...

  7. Linux C/C++ 编程练手 --- 大数相加和大数相乘

    最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...

  8. hdu1002大数相加

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. 基于visual Studio2013解决C语言竞赛题之1077大数相加

        题目 解决代码及点评 /************************************************************************/ /* ...

  10. 大数相加(类似杭电acm1002)

    /*输入两个非常大的整数(完全超出了int.long的表示范围),这个整数的长度可能超过100位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...

随机推荐

  1. SDUT 1941-Friday the Thirteenth(水)

    Friday the Thirteenth Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述  Is Friday the 13 ...

  2. C#中的 .NET 弱事件模式

    引言 你可能知道,事件处理是内存泄漏的一个常见来源,它由不再使用的对象存留产生,你也许认为它们应该已经被回收了,但不是,并有充分的理由. 在这个短文中(期望如此),我会在 .Net 框架的上下文事件处 ...

  3. ny220 推桌子

    推桌子 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 The famous ACM (Advanced Computer Maker) Company has rent ...

  4. Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目

    1.先看一下 Model 非常多 from django.db import models from users.models import UserProfile # Create your mod ...

  5. poj1564-Sum It Up(经典DFS)

    给出一个n,k,再给出的n个数中,输出所有的可能使几个数的和等于k Sample Input 4 6 4 3 2 2 1 15 3 2 1 1400 12 50 50 50 50 50 50 25 2 ...

  6. jquery和css3打造超梦幻的三维动画背景

    今天为大家带来的是一款由jquery和css3实现的超级梦幻的背景效果.绿色的小原点由远到近,由近到远一种飞跃效果.效果非常好看,我们一起看下效果图: 在线预览   源码下载 我们一起看下实现的代码. ...

  7. jffs2系统制作2

    http://blog.chinaunix.net/uid-23208702-id-353022.html 1.2.   安装zlib库 由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先 ...

  8. mongo-查询(2)——比较/$in/$nin/$or/$not

    mongo通find来查找文档.可以执行精确匹配和模糊匹配. 2. 模糊匹配 2.1比较 > $gt , >= $gte, < $lt, <= $lte, != $ne > ...

  9. 谈API网关的背景、架构以及落地方案

    Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景.解决方案以及案例.对于大多数基于微服务的应用程序而言,API网关都应该是系统的入口,它会负责服务请求路由.组 ...

  10. jQuery EasyUI教程之datagrid应用

    一.利用jQuery EasyUI的DataGrid创建CRUD应用 对网页应用程序来说,正确采集和管理数据通常很有必要,DataGrid的CRUD功能允许我们创建页面来列表显示和编辑数据库记录.本教 ...