PAT (Advanced Level) 1019 General Palindromic Number (20 分)
Python:
import sys
from math import *
str_in = input()
a = [int(n) for n in str_in.split()]
n = int(a[0])
d = int(a[1])
vis = [0] * 50
k = int(0)
while int(n) > 0:
k = k + 1
vis[k] = int(n % d)
n //= d
flag = 1
for i in range(1, int(k/2 + 1)):
if vis[i] != vis[k + 1 - i]:
flag = 0
break
if flag:
print("Yes")
for i in range(1, k):
print(vis[i],end = ' ')
print(vis[k])
else:
print("No")
for i in range(k, 1, -1):
print(vis[i],end = ' ')
print(vis[1])
C++:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cmath>
#include<map>
#include<queue>
#include<vector>
using namespace std;
#define ll long long int
#define LL ll
#define INF 0x3f3f3f3f
const int maxn = 1e5 + 10;
int a[maxn];
int n;
int d;
int main() {
scanf("%d %d", &n, &d);
int k = 0;
while (n) {
a[++k] = n % d;
n /= d;
}
int flag = 1;
for (int i = 1; i <= k / 2; i++) {
if (a[i] != a[k - i + 1]) {
flag = 0; break;
}
}
if (flag) {
puts("Yes");
for (int i = 1; i <= k; i++) {
if (i ^ 1) {
printf(" ");
}
printf("%d", a[i]);
}
printf("\n");
}
else {
puts("No");
for (int i = k; i >= 1; i--) {
if (i ^ k) {
printf(" ");
}
printf("%d", a[i]);
}
printf("\n");
}
return 0;
}
//_CRT_SECURE_NO_WARNINGS