题目解析:
主要考虑这么几个问题:1.输入的n和m是有范围的;2.注意有效字符和无效字符;3.就是溢出情况,大数取余;4最后就是输入输出问题(感觉题目没有说清楚)
参考代码:
#include "iostream"
#include "vector"
#include "string"
using namespace std;
void check(string str, int& res, int jin_zhi, int quyu)
{
int temp = 0;
if (jin_zhi > 10)
{
for (int i = 0; i < str.size(); ++i)
{
if (str[i] >= '0' && str[i] <= '9')
{
temp = res % quyu;
res = temp*jin_zhi + (str[i] - '0');
}
else if (str[i] >= 'a' && str[i] <= 'z')
{
if ((str[i] - 'a') < (jin_zhi - 10))
{
temp = res % quyu;
res = temp*jin_zhi + (str[i] - 'a') + 10;
}
else
{
return;
}
}
}
}
else{
for (int i = 0; i < str.size(); ++i)
{
if (str[i] >= '0' && str[i] <= '9')
{
if ((str[i] - '0') < jin_zhi)
{
temp = res % quyu;
res = temp*jin_zhi + (str[i] - '0');
}
else
{
return;
}
}
}
}
}
int main()
{
vector<int> result;
vector<int> m;
vector<string> str;
while (1)
{
int n_i;
int m_i;
string str_i;
cin >> n_i;
cin >> m_i;
cin >> str_i;
int res = 0;
check(str_i, res, n_i, m_i);
cout << res%m_i << endl;
result.push_back(res);
}
//if (!result.empty())
//{
// for (int j = 0; j <= result.size(); j++)
// {
// cout << result[j] % 10 << endl;
// }
//}
system("pause");
return 0;
}