2680 - 双重回文数
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。
事实上,有一些数(如21),在十进制时不是回文数,但在其它进制(如二进制时为10101)时就是回文数。
编一个程序,从文件读入两个十进制数
• N (1 <= N <= 15)
• S (0 < S < 10000)
然后找出前N个满足大于S且在两种以上进制(二进制至十进制)上是回文数的十进制数,输出到文件上。
题目输入
只有一行,用空格隔开的两个数N和S。
题目输出
N行, 每行一个满足上述要求的数,并按从小到大的顺序输出。
输入/输出样例
题目输入
3 25
题目输出
26 27 28
C++解答
#include<iostream> using namespace std; int a[5005]={}; bool huiwen(int x[],int len); bool jinzhi(int x[],int v,int j); int main() { int i,j,k,l=0,n,s; cin>>n>>s; i=s+1; while(true) { if(l==n) break; k=0; for(j=2;j<=10;j++){ if(jinzhi(a,i,j)) { k++; } if(k>=2) { break; } } if(k>=2) { cout<<i<<endl; l++; } i++; } return 0; } bool jinzhi(int x[],int v,int j){ int len=0; while(v!=0){ x[len]=v%j; v=v/j; len++; } return huiwen(x,len); } bool huiwen(int x[],int len) { int i; for(i=0;i<len/2;i++){ if(x[i]!=x[len-1-i]) return false; } return true; }