zoj1078

来源:互联网 发布:初级会计怎么备考 知乎 编辑:程序博客网 时间:2024/05/23 15:17

这题其实就是写一个函数比较一下一个数的某某进制是不是回文数,我是采用了两个数组进行比较,然后写了一个ans数组存储符合的进制,之后输出即可

#include<iostream>#include<stdio.h>#include<cstring>using namespace std;int num1[1000],num2[1000];int k,j;void fun1(int num,int n){    if(num==0) return;      num1[j++]=num%n;    fun1(num/n,n);    num2[k++]=num%n;}int main(){    int flag=1,flag2=0;    int ans[17]={   0   };    int num;    while(cin>>num&&num){        flag=1;        flag2=0;        memset(ans,0,sizeof(ans));        for(int i=2;i<=16;i++ ){            k=j=0;            fun1(num,i);            for(int q=0;q<j;q++){                if(num1[q]!=num2[q]) {                    flag=0;                    break;                }            }            if(flag) {                ans[i]=1;                flag2=1;            }            flag=1;        }        if(flag2==1) {            printf("Number %d is palindrom in basis",num);            for(int i=2;i<=16;i++){                if(ans[i]==1)                {                    printf(" %d",i);                }            }            printf("\n");        }        else        {            printf("Number %d is not a palindrom\n",num);        }    }}
1 0