非常抱歉,我写的代码有一些错误。下面是修正后的示例代码:
A题:#include <iostream>
#include <vector>
using namespace std;
string rollString(string s, vector<int> x) {
int n = s.length();
for (int i = 0; i < n; i++) {
// 将字符转换为ASCII码,滚动操作,再转换回字符
s[i] = (s[i] - 'a' + x[i]) % 26 + 'a';
}
return s;
}
int main() {
int t;
cin >> t; // 数据组数
while (t--) {
string s;
cin >> s; // 字符串
int n;
cin >> n; // 整数数组的长度
vector<int> x(n);
for (int i = 0; i < n; i++) {
cin >> x[i]; // 读取整数数组
}
string result = rollString(s, x);
cout << result << endl;
}
return 0;
}
B题:#include <iostream>
#include <vector>
using namespace std;
void calculateValue(string s, vector<int> x) {
int n = s.length();
int start = 0; // 信息段的起始位置
for (int i = 0; i < n; i++) {
if (s[i] == '#') {
if (i - start > 1) { // 如果信息段不为空
string name = s.substr(start, i - start); // 计算信息段的名字
int value = accumulate(x.begin(), x.end(), 0); // 计算信息段的权值
cout << name << " " << value << endl;
}
start = i + 1;
}
}
// 处理最后一个信息段
if (n - start > 1) {
string name = s.substr(start, n - start); // 计算信息段的名字
int value = accumulate(x.begin(), x.end(), 0); // 计算信息段的权值
cout << name << " " << value << endl;
}
}
int main() {
int t;
cin >> t; // 数据组数
while (t--) {
string s;
cin >> s; // 字符串
int n;
cin >> n; // 整数数组的长度
vector<int> x(n);
for (int i = 0; i < n; i++) {
cin >> x[i]; // 读取整数数组
}
calculateValue(s, x);
}
return 0;
}
C题:#include <iostream>
#include <algorithm>
using namespace std;
bool isPalindrome(string s) {
int n = s.length();
for (int i = 0; i < n / 2; i++) {
if (s[i] != s[n - i - 1]) {
return false;
}
}
return true;
}
int main() {
string s;
cin >> s;
string reversed = s;
reverse(reversed.begin(), reversed.end());
if (isPalindrome(s) && s != reversed) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
希望这次的代码能够正确输出结果。如果还有问题,请随时告诉我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |