思路:纯模拟,但第三个样例输出288。
//暴力模拟,按位算
#include<bits/stdc++.h>
using namespace std;
int ans,T;
vector<int> g;
int cal(int x)//计算这个数有几位
{
return (int)(log10(x))+1;
}
int main()
{
cin>>T;
while(T--)
{
int l,r;
ans=0;
scanf("%d%d",&l,&r);
//i一定合法,看翻转数是否合法。
for(int i=max(l,10);i<=r;i++)//暴力判断
{
int ii=i;
g.clear();//清空vector
int k=cal(ii);//k表示i有几位
for(int j=1;j<=k;j++)//按位拆分到一个vector里
{
g.push_back(ii%10);
ii/=10;
}
reverse(g.begin(),g.end());//每一位存到了数组里
for(int j=1;j<k;j++)//进行k-1次翻转
{
g.push_back(g.front());
g.erase(g.begin());
//得到了一个新数x,看x是否满足l<=x<=r;
int p=0;
while(g[p]==0)
p++;
int temp=0;
while(p!=g.size())
{
temp*=10;
temp+=g[p];
p++;
}
if(temp<=i)//避免重复的
continue;
if(temp>=l&&temp<=r)
{
ans++;
cout<<i<<" "<<temp<<endl;
}
}
}
cout<<ans<<endl;
}
return 0;
}