25分求助 ACon#3

P1015 [NOIP1999 普及组] 回文数

用得着写这么多吗?~~虽然我的压过行,但展开了也比你的少啊~~```cpp #include <bits/stdc++.h> using namespace std; const int N = 105; int a[N], b[N]; int n, len; string m; bool check() { for (int i = 0; i < len; ++i) if (a[i] != a[len - i - 1]) return false; return true; } void ps() { for (int i = 0; i < len; ++i) b[i] = a[len - i - 1]; for (int i = 0; i < len; ++i) a[i] += b[i]; for (int i = 0; i < len; ++i) { a[i + 1] += a[i] / n; a[i] %= n; } if (a[len]) ++len; } int main() { scanf("%d", &n); cin >> m; len = m.size(); for (int i = 0; i < len; ++i) if (m[i] >= '0' && m[i] <= '9') a[i] = m[len - 1 - i] - '0'; else a[i] = m[len - 1 - i] - 'A' + 10; int step; for (step = 1; step <= 30; ++step) { ps(); if (check()) break; } if (step <= 30) cout << "STEP=" << step << endl; else cout << "Impossible!" << endl; return 0; } ```
by Dumbo @ 2023-11-19 19:09:46


对不起,排版乱了。 ```cpp #include <bits/stdc++.h> using namespace std; int a[105], b[105], n, len,step; string m; bool check() { for (int i = 0; i < len; ++i) if (a[i] != a[len - i - 1]) return false; return true; } void ps() { for (int i = 0; i < len; ++i)b[i] = a[len - i - 1]; for (int i = 0; i < len; ++i)a[i] += b[i]; for (int i = 0; i < len; ++i) {a[i + 1] += a[i] / n;a[i] %= n;} if (a[len])++len; } int main() { scanf("%d", &n); cin >> m; len = m.size(); for (int i = 0; i < len; ++i) if (m[i] >= '0' && m[i] <= '9')a[i] = m[len - 1 - i] - '0'; else a[i] = m[len - 1 - i] - 'A' + 10; for (step = 1; step <= 30; ++step) {ps();if (check()){break;}} if (step <= 30)cout << "STEP=" << step << endl; else cout << "Impossible!" << endl; return 0; } ```
by Dumbo @ 2023-11-19 19:20:33


|