编辑代码

#include <stdio.h>
#include <memory.h>

#define MAXN1 2000
#define MAXN2 16

char t[MAXN1];

int ispalindrom (int num, int base) {
    // 这是一个判断数组元素是否为回文的自定义函数
    int num, base;
    char baseNum[2000];
    int i = 0;
    scanf("%d",&base);
    while(num){
        baseNum[i] = num % base;
        num = num / base;
        i++;
    }
    int low = 0;
    int high = i;
    while(low<high){
        if(baseNum[low]!=baseNum[high]){
            return 0;
        }
        low++;
        high--;
    }
    return 1;
}

int main(void){
    int n , i;
    int ans[MAXN2+1];

    while(scanf("%d", &n) != EOF && n != 0) {
        memset(ans, 0, sizeof(ans));
 
        for(i=2; i<=MAXN2; i++)
            if(ispalindrom(num, base)) {
                ans[0] = 1;
                ans[i] = 1;
            }
 
        if(ans[0]) {
            printf("Number %d is palindrom in basis", n);
            for(i=2; i<=MAXN2; i++)
                if(ans[i])
                    printf(" %d", i);
            printf("\n");
        } else
            printf("Number %d is not palindrom\n", n);
    }
 
    return 0;
}