您的位置:首页 > 编程语言 > C语言/C++

双基回文数(C语言)

2016-03-28 18:20 288 查看
如果一个正整数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
比较了吗???
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言