博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二十进制数的加法
阅读量:5235 次
发布时间:2019-06-14

本文共 2414 字,大约阅读时间需要 8 分钟。

题目详情

在二十进制中,我们除了使用数字0-9以外,还使用字母a-j(表示10-19),给定两个二十进制整数,求它们的和。

输入是两个二十进制整数,且都大于0,不超过100位;

输出是它们的和(二十进制),且不包含首0。我们用字符串来表示二十进制整数。

 

class Program    {        static void Main(string[] args)        {            string s = Sum("abc", "abc"); // 1134            Console.WriteLine(s);            Console.Read();        }        ///         /// 二十进制相加        ///         /// 字符串a        /// 字符串b.        /// 
static string Sum(string a, string b) { int len = a.Length > b.Length ? a.Length + 1 : b.Length + 1; char[] ar = new char[len]; int i = 0; int ai = a.Length - 1; int bi = b.Length - 1; int t; int ad = 0; while (ai >= 0 || bi >= 0) { if (ai >= 0 && bi >= 0) { t = Map(a[ai]) + Map(b[bi]) + ad; } else if (ai >= 0) { t = Map(a[ai]) + ad; } else { t = Map(b[bi]) + ad; } ar[i++] = RMap(t % 20); ad = t / 20; ai--; bi--; } if (ad > 0) { ar[i] = '1'; } int h = ar.Length - 1; while (ar[h] == '\0') { h--; } string s = ""; while (h >= 0) { s += ar[h--]; } return s; } /// /// Maps the specified c. /// a -> 10 , j-> 19 , others exception /// /// The c. ///
///
c
static int Map(char c) { c = char.ToLower(c); if (c >= 'a' && c <= 'j') { return 10 + (c - 'a'); } throw new ArgumentException("c"); } /// ///Map int to char, 10 -> a , 19 -> j /// /// The i. ///
///
i
static char RMap(int i) { if (i >= 10 && i <= 19) { return Convert.ToChar(87 + i); } else if (i < 10) { return i.ToString()[0]; } throw new ArgumentException("i"); } }

 

转载于:https://www.cnblogs.com/leonwang/p/3510211.html

你可能感兴趣的文章
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>
安卓开发中遇到的小问题
查看>>
ARTS打卡第3周
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>