算法
(字符串处理,模拟) $O(n)$
按照题目中给定的规则,计算出识别码,再判断是否与给定的识别码相同:
- 如果相同,输出 “Right”;
- 如果不同,输出 正确的字符串。
时间复杂度
每个字符处理一遍,因此总时间复杂度是 $O(n)$。
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string str;
cin >> str;
int sum = 0;
for (int i = 0, j = 1; i + 1 < str.size(); i ++ )
if (str[i] != '-')
{
sum += (str[i] - '0') * j;
j ++ ;
}
sum %= 11;
char c = 'X';
if (sum < 10) c = '0' + sum;
if (c == str.back()) puts("Right");
else
{
str.back() = c;
cout << str << endl;
}
return 0;
}
y总,为什么这个代码在洛谷上编译错误啊。。。是不是编译器不一样。。。我的代码在这里过了,在洛谷上总是也过不了。。。怎么办
编译器版本不同。你在洛谷上试试其他C++17。
好的,谢谢y总
但如果不知道考试用什么编译器怎么办?谢谢
C++会向前兼容,当不能确定版本时,一律当做C++99即可。
知道了,谢谢y总