Martian Addition


Time Limit: 2 Seconds      Memory Limit: 65536 KB


  In the 22nd Century, scientists have discovered intelligent residents live on the Mars. Martians are very fond of mathematics. Every year, they would hold an Arithmetic Contest on
Mars (ACM). The task of the contest is to calculate the sum of two 100-digit numbers, and the winner is the one who uses least time. This year they also invite people on Earth to join the contest.

  As the only delegate of Earth, you're sent to Mars to demonstrate the power of mankind. Fortunately you have taken your laptop computer with you which can help you do the job quickly.
Now the remaining problem is only to write a short program to calculate the sum of 2 given numbers. However, before you begin to program, you remember that the Martians use a 20-based number system as they usually have 20 fingers. 



Input:

You're given several pairs of Martian numbers, each number on a line. 

Martian number consists of digits from 0 to 9, and lower case letters from a to j (lower case letters starting from a to present 10, 11, ..., 19). 

The length of the given number is never greater than 100.



Output:

For each pair of numbers, write the sum of the 2 numbers in a single line.



Sample Input:

1234567890
abcdefghij
99999jjjjj
9999900001

Sample Output:

bdfi02467j
iiiij00000

Source: Zhejiang University Local Contest 2002, Preliminary

解题思路:

求两个20进制的数的和,用数组模拟相加就能够。

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <map>
using namespace std;
map<int,char>change; char num[105];
int add1[105];
int add2[105];
int ans[105];
int jin[105]; void prepare()
{
change[0]='0';change[1]='1';change[2]='2';change[3]='3';
change[4]='4';change[5]='5';change[6]='6';change[7]='7';
change[8]='8';change[9]='9';change[10]='a';change[11]='b';
change[12]='c';change[13]='d';change[14]='e';change[15]='f';
change[16]='g';change[17]='h';change[18]='i';change[19]='j';
} int main()
{
prepare();
while(cin>>num)
{
memset(add1,0,sizeof(add1));
memset(add2,0,sizeof(add2));
memset(jin,0,sizeof(jin));
int len1=strlen(num);
int t=0;
for(int i=len1-1;i>=0;--i)
{
if(!(num[i]>='0'&&num[i]<='9'))
add1[t++]=num[i]-87;
else
add1[t++]=num[i]-'0';
}
cin>>num;
int len2=strlen(num);
t=0;
for(int i=len2-1;i>=0;--i)
{
if(!(num[i]>='0'&&num[i]<='9'))
add2[t++]=num[i]-87;
else
add2[t++]=num[i]-'0';
}
//输入处理完成
//for(int i=0;i<len2;i++)
// cout<<add2[i];
//cout<<endl; int len=max(len1,len2);
for(int i=0;i<=len;i++)
{
int temp=add1[i]+add2[i]+jin[i];
if(temp>=40)
{
ans[i]=temp-40;
jin[i+1]=2;
}
else if(temp>=20)
{
ans[i]=temp-20;
jin[i+1]=1;
}
else
ans[i]=temp;
}
if(ans[len])
cout<<change[ans[len]];
for(int i=len-1;i>=0;i--)
cout<<change[ans[i]];
cout<<endl;
}
return 0;
}

[ACM] ZOJ Martian Addition (20进制的两个大数相加)的更多相关文章

  1. ZOJ Martian Addition

    Description In the 22nd Century, scientists have discovered intelligent residents live on the Mars. ...

  2. ZOJ Problem Set - 1205 Martian Addition

    一道简单题,简单的20进制加减法,我这里代码写的不够优美,还是可以有所改进,不过简单题懒得改了... #include <stdio.h> #include <string.h> ...

  3. ZOJ 1205 Martian Addition

    原题链接 题目大意:大数,20进制的加法计算. 解法:convert函数把字符串转换成数组,add函数把两个大数相加. 参考代码: #include<stdio.h> #include&l ...

  4. PAT1027 Colors in Mars (20分) 10进制转13进制

    题目 People in Mars represent the colors in their computers in a similar way as the Earth people. That ...

  5. ASCII和16进制

    所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...

  6. python进制转换及变量

    .编译型语言和解释型语言的区别? 答: () 编译型语言:是将所有源码编译完成二进制后才进行输出,运行快,执行效率高,时间周期长. ()解释型语言:逐行编译输出,执行效率相对慢,开发效率高, .Pyt ...

  7. ASCII码与16进制的互相转换(表)

    所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...

  8. 数组中hashCode就是内存地址,以及汉字幻化为16进制或10进制

    int[] arr4={1,2,3,4,5}; System.out.println("arr4: "+arr4); System.out.println("arr4.h ...

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

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

随机推荐

  1. [APIO2007]动物园 --- 状压DP

    [APIO2007]动物园 题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 如下图所示: 你是动物园的公共主管.你要做的是,让每 ...

  2. 20162327WJH Android开发程序设计实验报告

    学号 20162327 <程序设计与数据结结构>Android开发程序设计实验报告 实验一:Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第 ...

  3. 哈希表(散列表)—Hash表解决地址冲突 C语言实现

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...

  4. bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班 -- 贪心

    3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Description     一天有 ...

  5. [转]android中OnTouch和OnClick、 imagebutton的src和background有什么区别

    1.OnTouch和OnClick有何区别?   专业回答 1.onClick就传入一个View对象,而 onTouch要传入一个View 对象和 MotionEvent的对象2.onTouch对控件 ...

  6. Java中文件与字节数组转换

    注:来源于JavaEye 文件转化为字节数组: http://www.javaeye.com/topic/304980 /** * 文件转化为字节数组 * * @param file * @retur ...

  7. UIColor和 同 CIColor 与 CGColor 之间的联系、转换

    1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RPG颜色,所以,需要先转换成 10进制,其中 F6 - 240,F6 -  240 ,F6 - ...

  8. 使用Win2D在UWP程序中2D绘图(一)

    在新的Windows UWP程序中,引入了一个新的API库: Win2D.它是一个d2d的封装,可以直接使用C#来快速实现高效2D绘图了.这个API虽然在Win8.1时代就开始着手开发了,但最近才完善 ...

  9. Apache服务器和tomcat服务器有什么区别?

    Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的 Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器. ...

  10. 深度学习教程Deep Learning Tutorials

    Deep Learning Tutorials Deep Learning is a new area of Machine Learning research, which has been int ...