双基回文数(C语言)

来源:互联网 发布:李政道和杨振宁知乎 编辑:程序博客网 时间:2024/06/06 15:27

如果一个正整数n至少在两种不同的进制下b1和b2下都是回文数(2<=b1,b2<=10),则称n是双基回文数(注意,回文数不能包含前导零)。输入正整数S<10^6,输出比S大的最小的双基回文数。

#include <stdio.h>/*判断是否是回文数*/int is_huiwen(int a[],int n){    int i;    for( i=0;i<n/2;i++){        if(a[i]!=a[n-i-1]){            return 0;            break;        }    }    return 1;}/*判断n转换成k进制后是不是回文数*/int converse(int n,int k){    int a[30];    int j=0;    while(n){        a[j++] = n%k;//得出数组a[j-1]        n/=k;    }    if(is_huiwen(a,j-1))        return 1;           //是回文数返回1    else        return 0;}int main(){    int s;//输入正整数s    while(~scanf("%d",&s)){        int n;        for(n=s+1;;n++){            int flag=0;            int i;            for( i=2;i<=10;i++){                if(converse(n,i))                    flag++;            }            if(flag>=2){                printf("%d",n);                break;            }        }    }    return 0;}

但是输入结果和其他人的不一样,自己没有写想明白,请大家帮忙看一下。就是if(a[i]!=a[n-i-1])这里,别人都是写的a[i]!=a[n-i],那样不就是a[0]和a[n]比较了吗???

0 0
原创粉丝点击