一道关于双重回文数的题目,请各位网友给出代码

题目描述

如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321 就是一个回文数,而 77778 就不是。当然,回文数的首和尾都应是非零的,因此 0220 就不是回文数。事实上,有一些数(如 33 ),在十进制时是回文数,在二进制时( 100001 )时也是回文数,我们姑且将这样的数叫做双重回文数,请你找出两个整数之间的所有双重回文数,如果没有,输出-1

输入格式

1 行,共两个整数,使用空格隔开。(第一个整数不大于第二个整数)

输出格式

2个整数范围内满足条件的双重回文数,并进行换行显示

如果没有,输出-1

输入输出样例

输入#1

10 1000

输出#1

33
99
313
585
717

转载自 双重回文数 Dual Palindromes_菱形继承-CSDN博客_双重回文数 P1207 [USACO1.2]双重回文数 Dual Palindromes分析:和上一道水题一样,稍微改改就可以用了哈哈题目太水就不解释啦#include<bits/stdc++.h>using namespace std;int j,k,cnt;string s;void change(int x,int n){ while(x) { ... https://blog.csdn.net/weixin_43798170/article/details/88410101


#include<bits/stdc++.h>
using namespace std;
int j,k,cnt;
string s;
void  change(int x,int n)
{
    while(x)
    {
        if(x%n>=0&&x%n<=9)
    s+=(x%n+'0');
    else
         s+=(x%n+'A'-10);
      x/=n;
    }
}
int main()
{
    cin>>j>>k;
    for(int v=k+1;;v++)
    {
        int cntt=0;
    for(int i=2;i<=10;i++)
   {
       s.clear();
    change(v,i);
    string k(s.begin(),s.end());
   reverse(s.begin(),s.end());
   if(s==k)
   {
       cntt++;
       //cout<<cntt;
       if(cntt==2)
       {
           cout<<v<<endl;
           cnt++;
           break;
       }
   }
   }
   if(cnt==j)break;
    }
    return 0;
}

这个我看到过,但我这道和那个不太一样