75,2测试点wa,求助大佬

P1015 [NOIP1999 普及组] 回文数

因为题目原因有点小长,在此先谢过各位大佬
by Faded_wind123 @ 2024-04-14 00:25:14


找到问题了,16进制没看到
by Faded_wind123 @ 2024-04-14 00:28:54


加了分更低了qaq ``` #include <iostream> #include <string> using namespace std; int hw(string a) { int l = a.size(); for (int i = 0; i < l / 2; i++) { if (a[i] != a[l - 1 - i]) { return 0; } } return 1; } string add(string a, string b, int jz) { int l1 = a.size(), l2 = b.size(); if (l1 > l2) { b = string(l1 - l2, '0') + b; } if (l1 < l2) { a = string(l2 - l1, '0') + a; } int cf = 0, temp = 0; string c; int f = max(l1, l2); for (int i = 0; i < f; i++) { if (a[i] >= '0' && a[i] <= '9') { a[f - 1 - i] = a[f - 1 - i] - '0'; } else { a[f - 1 - i] = a[f - 1 - i] - 'A' + 10; // 将字符 'A' 到 'F' 转换为对应的数字值 } if (b[i] >= '0' && b[i] <= '9') { b[f - 1 - i] = b[f - 1 - i] - '0'; } else { b[f - 1 - i] = b[f - 1 - i] - 'A' + 10; // 将字符 'A' 到 'F' 转换为对应的数字值 } temp = a[f - 1 - i] + b[f - 1 - i] + cf; cf = temp / jz; temp %= jz; if (temp >= 0 && temp <= 9) { c = char(temp + '0') + c; } else { c = char(temp - 10 + 'A') + c; // 将数字值转换回字符 'A' 到 'F' } } if (cf >= 0 && cf <= 9) { c = char(cf+ '0') + c; } else { c = char(cf - 10 + 'A') + c; // 将数字值转换回字符 'A' 到 'F' } return c; } string change(string a) { string b; for (int i = a.size() - 1; i >= 0; i--) { b += a[i]; } return b; } int main() { int k; string a; cin >> k >> a; int step = 0; do { if (hw(a)) { cout << step; return 0; } a = add(a, change(a), k); step++; } while (step <= 30); cout << "Impossible!"; return 0; }
by Faded_wind123 @ 2024-04-14 01:16:00


|