本文主要是介绍中级题:二师弟的星际加法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16进制等,有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。
说明:
数字的字符串其中包括0-9和a-z(表示10-35)。
所有的输入和输出都只会是小写字母或数字,不存在其他字符。
运行时间限制: 无限制
内存限制: 无限制
输入:
整形数: 计算进制
字符串: 计算数1
字符串: 计算数2
输出:
字符串: 计算结果
样例输入:
10
100
100
样例输出:
200
代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{int num;cin >> num;
// cout << num << endl;getchar();string str1, str2;getline(cin, str1);
// cout << str1 << endl;getline(cin, str2);
// cout << str2 << endl;int len1 = str1.size(), len2 = str2.size();reverse(str1.begin(), str1.end());
// cout << str1 << endl;reverse(str2.begin(), str2.end());
// cout << str2 << endl;int len = len1 > len2 ? len1 : len2, *n = new int[len]{0};
// cout << "len: " << len << endl;int i;int *n1 = new int[len],*n2 = new int[len];for (i = 0; i < len; i++){n1[i] = n2[i] = 0;}for (i = 0; i < len1; i++){if (islower(str1[i]))n1[i] = str1[i] - 'a' + 10;else if (isdigit(str1[i]))n1[i] = str1[i] - '0';else{cout << -1;return 0;}if (n1[i] >= num){cout << -1;return 0;}}
// cout << "1: ";
// for (i = 0; i < len1; i++)
// cout << n1[i];
// cout << endl;for (i = 0; i < len2; i++){if (islower(str2[i]))n2[i] = str2[i] - 'a' + 10;else if (isdigit(str2[i]))n2[i] = str2[i] - '0';else{cout << -1;return 0;}if (n2[i] >= num){cout << -1;return 0;}}
// cout << "2: ";
// for (i = 0; i < len2; i++)
// cout << n2[i];
// cout << endl;int temp,flag=0; // cout << len << endl;for (i = 0; i < len; i++){temp = n1[i] + n2[i]+flag;
// cout << "n1: " << n1[i] << endl << "n2: " << n2[i] << endl << "temp: " << temp << endl;if (temp >= num){n[i] = temp - num;
// cout << n[i] << endl;flag = 1;}else{n[i] = temp;
// cout << n[i] << endl;flag = 0;}}if (flag)cout << 1;for (i = len - 1; i >= 0; i--){if (n[i] > 9)cout << char(n[i] - 10 + 'a');elsecout << char(n[i]+'0');}
// system("pause");return 0;
}
得分 | 运行时间 | 内存 | 复杂度 | 最大嵌套深度 |
110(200) | 31ms | 2084KB | 20 | 3 |
失败数量 5
异常数量 0
1
4
6
7
9
这篇关于中级题:二师弟的星际加法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!