社区讨论
25fenyizhishuchuimpossible
P1015[NOIP 1999 普及组] 回文数参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m05719hb
- 此快照首次捕获于
- 2024/08/22 19:22 2 年前
- 此快照最后确认于
- 2025/11/04 22:43 4 个月前
25分一直输出Impossible! #4通过,其他wa
CPP#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
void getSum(int numa[], int numb[], int len, int base, int* start) {
int ans[len + 1] = {0};
for (int i = len; i > 0; i--) {
ans[i] += numa[i] + numb[i];
if (ans[i] > base - 1) {
ans[i] -= base;
ans[i - 1]++;
}
}
for (int i = 0; i <= len; i++) {
start[i] = ans[i];
}
}
bool palindrome(int arr[], int len) {
int center = len / 2;
for (int i = 0; i < center; i++) {
if (arr[i] != arr[len - i - 1]) {
return 0;
}
}
return 1;
}
void reverse_string(int* s, int len, int* ans) {
for (int i = 0; i < len; i++) {
ans[i] = s[len - i - 1];
}
}
int main() {
int n;
char m[105];
cin >> n >> m;
int len = strlen(m);
int num[len];
for (int i = 0; i < len; i++) {
num[i] = m[i] - (m[i] < 60 ? 48 : 55);
}
for (int i = 1; i <= 30; i++) {
int temp[len];
reverse_string(num, len, temp);
int ans_temp[len];
getSum(num, temp, len, n, ans_temp);
if (palindrome(ans_temp, len)) {
cout << "STEP=" << i;
return 0;
}
}
cout << "Impossible!";
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...