第6题 镜面数

如果一个数的位数是偶数,且其前半部分和后半部分的数关于最中间的位置成轴对称,则我们称这个数为镜面数。为了便于理解,我们假定 1 1 1个数为 6 6 6位数,则若其为镜面数,则其可以写成 a 1 a 2 a 3 a 3 a 2 a 1 a1a2a3a3a2a1 a1a2a3a3a2a1 的形式。因此像 11 11 11 22 22 22 345543 345543 345543 12344321 12344321 12344321 11222211 11222211 11222211等均为镜面数,而 12321 12321 12321 1234321 1234321 1234321 141 141 141等均不是镜面数,因为他们的位数是奇数。 12345 12345 12345 123312 123312 123312 132321 132321 132321等也不是镜面数,因为他们不关于最中间的位置成轴对称。现给两个数 a , b a,b a,b ( a < = b ) (a<=b) a<=b,请你告诉我 a   b a~b a b这个区间内 (包含 a 和 b ) (包含a和b) (包含ab,共有多少个数为镜面数。

输入格式
一行,两个正整数 a a a b b b

输出格式
一个正整数,为镜面数的数量。

输入/输出例子1
输入:

1 100

输出:

9

数据范围
60%的数据, 1 < a < = b < = 1 0 7 1<a<=b<=10^7 1<a<=b<=107
100%的数据, 1 < a < = b < = 1 0 9 1<a<=b<=10^9 1<a<=b<=109
c++:

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,m,j=0,g=0,x,t;
    cin>>n>>m;
    for(int i=1;i<=100000;i++){
        t=i;
        x=0;
        j=1;
        while(t>0){
            x=x*10+t%10;
            t/=10;
            j=j*10;
        }
        if(i*j+x>=n&&i*j+x<=m)g++;
    }
    cout<<g;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值