运行结果:
代码如下:
#include <iostream>
using namespace std;
//计算n的位数
int nmbws(int n)
{
int ws=0;
while(n)
{
ws++;
n/=10;
}
return ws;
}
//将数字123转成字符串123123
void int2char(int n,int ws,char buf[])
{
int i=ws-1;
int j=2*ws-1;
while(n)
{
buf[i] = '0'+ n%10;
buf[j] = buf[i];
i--;j--;
n/=10;
}
buf[2*ws] = 0;
}
//将字符"123"转成数字123
int char2int(char buf[],int n)
{
int s=0;
for (int i = 0;i<n;i++)
{
s = s*10 + buf[i] - '0';
}
return s;
}
int main()
{
int n,a,b;
int cnt = 0;
char buf[20];
cin >> n;
for (int i = 0;i<n;i++)
{
cin >> a>>b;
cnt=0;
for (int j = a;j<=b;j++)
{
int ws = nmbws(j);
int2char(j,ws,buf);
for (int m = 1;m<ws;m++)
{
int vv = char2int(buf+m,ws);
if(j<vv&& vv >=a && vv<=b && nmbws(vv)==ws)
{
cnt++;
//cout << j << " " << vv << endl;
}
}
}
cout << cnt<<endl;
}
return 0;
}
#include <stdio.h>
int fun(int n)
{
int s= 0;
while(n>0)
{
s++;
n/=10;
}
return s;
}
int move1(int n,int s)
{
int b = n%10;
int k = n/10;
return k + b*pow(10.0,s);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int A,B;
int count=0;
scanf("%d%d",&A,&B);
for(int j=A;j<=B;j++)
{
int s = fun(j);
int t = move1(j,s-1);
while(t != j)
{
if(t>j && t<B)
count++;
t = move1(t,s-1);
}
}
printf("%d\n",count);
}
return 0;
}