题目描述:
我是网络公司的一名普通程序员,英文名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');
else
cout << char(n[i]+'0');
}
// system("pause");
return 0;
}
得分 | 运行时间 | 内存 | 复杂度 | 最大嵌套深度 |
110(200) | 31ms | 2084KB | 20 | 3 |
失败数量 5
异常数量 0
1
4
6
7
9