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位,计算并输出这两个数相加的结果.*/ //自己用题目所给的案例测试,输出是正确的,也能输出正确的结果,不 ...
随机推荐
- [na][tools]快速ping网段工具-QuickPing
一款神器 quickping 能够很快的探测出该网断分出去哪些地址. 在线的会显示绿色 在线的+有主机名的显示为亮绿色
- android即时消息处理机制
在android端做即时消息的时候.遇到的坑点是怎么保证消息即时性,又不耗电.为什么这么说呢? 原因是假设要保证消息即时性.通常有两种机制pull或者push. pull定时轮询机制,比較浪 ...
- SourceInsight-Symbol not found
使用SourceInsight查看源代码时,发现点击查看相关类型时,无法关联到其代码,出现 symbol not found, 然而明明在我的头文件有定义的 网上查了一下主要是因为新建工程导入文件后, ...
- You have JVM property "https.proxyHost" set to “localhost”
Mac下Pycharm和AndroidStudio里面proxy配置页都提示这个,后来在~/.gradle/gradle.properties里面找到了proxy设置代码,删掉就好了.
- Python asyncio文档阅读摘要
文档地址:https://docs.python.org/3/library/asyncio.html 文档第一句话说得很明白,asyncio是单线程并发,这种event loop架构是很多新型异步并 ...
- SpringKafka生产端配置类ProducerConfig.java源码
/** * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreeme ...
- js JSON对象与字符串相互转换
从服务器接收到数据一般是字符串的形式.如果是JSON格式的字符串,就需要先将其转换成JSON对象.JSON对象在浏览器输出为objcet,我们看不到具体的数据.所以将JSON对象转换成字符串. 下面将 ...
- 【C++程序员学 python】python 之helloworld
我学习C语言之后才学的C++,所以这里写一个简单的helloworld程序. #coding:utf-8 def main(): print "hello world" if __ ...
- 基于css3炫酷页面加载动画特效代码
基于CSS3实现35个动画SVG图标.这是一款基于jQuery+CSS3实现的SVG图标动画代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=&qu ...
- u-boot 2016.05 添加自己的board 以及config.h
拿到一个uboot 后,我都想添加一个属于自己的board文件以及include/configs/*.h 文件. 如何添加这个些文件,今天来记录一下. 复制一份你所参考的板级文件,比如说board/v ...