二师弟的星际加法
来源:互联网 发布:英雄联盟mac国服下载 编辑:程序博客网 时间:2024/06/11 19:36
我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。
说明:
1:数字的字符串其中包括0-9和a-z(表示10-35)。
2:所有的输入和输出都只会是小写字母或数字,不存在其他字符。
/*2-35进制加法,大数相加*/#include<iostream>#include<string>using namespace std;int N_To_Int(string src, int N);string Int_to_N(int src, int N);string revert(string s){for (int i = 0, j = s.size() - 1; i < j; i++, j--){char tmp;tmp = s[i];s[i] = s[j];s[j] = tmp;}return s;}int main(){int N;cin >> N;if (N > 35){cout << -1;return 0;}string s1 = "";string s2 = "";cin >> s1 >> s2;s1=revert(s1);s2=revert(s2);string result = "";int lenght1 = s1.size();int lenght2 = s2.size();int max = lenght1 > lenght2 ? lenght1 : lenght2;if (lenght1<lenght2)for (int i = 0; i<lenght2 - lenght1; i++)s1 += '0';if (lenght1>lenght2)for (int i = 0; i<lenght1 - lenght2; i++)s2+= '0';int carry = 0;for (int i = 0; i <max;i++){int x;if (s1[i]>'9')x = s1[i] - 'a' + 10;elsex = s1[i] - '0';int y = ((s2[i]>'9')? s2[i] - 'a'+10 : s2[i] - '0');int a=x+y+carry;carry = a/N;a = a%N;char b = a > 9 ? a + 'a' - 10 : a + '0';result+= b;}string s_carry = "";if (carry > 0)s_carry = carry + '0';result += s_carry;result = revert(result);cout << result << endl;return 0;}
0 0
- 二师弟的星际加法
- 中级题:二师弟的星际加法
- 华为编程大赛--二师弟的星际加法
- 华为上机题-二师弟的星际加法
- 星际二的ui
- 二十进制的加法
- 二十进制的加法
- 对面的师弟
- 给师弟的一封信
- 二十进制数的加法
- 二十进制数的加法
- 二十进制数的加法
- 二十进制数的加法
- 给我的师弟们
- 给在校师弟的答复
- 给师弟们的一封信
- 星际二图形不错
- 星际二开始狂欢
- Android 的 SDK Manager 无法启动 闪退解决方法
- struts2工作流程
- 区块链技术资料
- WCF分分钟入门
- mysql命名规范
- 二师弟的星际加法
- [Apio2012][Treap]派遣
- HYSBZ 2463
- spark初体验
- PSR-0 自动加载标准
- elgg博客(一)
- IIxirtaMD2ahcraeS.240
- git版本控制管理的学习(三)——提交探索
- Oracle 查询被锁的包package