神奇的魔镜
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
描述
传说在一个古堡里,有一个神奇的魔镜,能够回答人们的问题,每天的晚上,都会有一个神秘的人过来询问魔镜
神秘人问:“魔镜啊魔镜,谁是世界上最帅的人”
魔镜回答到:“李老师是我见过最帅的人”,这个神奇的魔镜,很显然只会说实话。
那么有一天,镜子被小星拿到了,发现神奇的魔镜之所以能够回答问题,因为有魔力源泉,而魔力的源泉来自一组神奇的数字,这些数字都有一个特点,翻转 180 度后,还和原来一个样子,例如 数字 8,翻转 180 度后还依旧是 8,数字 2 翻转 180 度后,变不回原来的样子,这样的数字我们称之为镜子数字(就跟照镜子一样)如图。
现在小星想要去研究一下,从 n 到 m 之间存在多少个神奇的数字呢?
注意:神奇的数字有很多,不仅仅只有一位数,还有两位数、三位数。。。。
现在请根据下面的图片对数字进行翻转吧,帮助小星找的神奇的数字
输入描述
一行分别输入 n 和 m (1<=n<=m<=109)
输出描述
输出神奇数字的个数
样例输入 1
1 100
样例输出 1
6
这道题类似于翻转数字,但仔细阅读又会发现略有些不同,读者可能会陷入小坑,希望大家每次读题时一定要擦亮眼睛呀
答案详解
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int sum=0;
for(int i=n;i<=m;i++)
{
int t=i;
int num=0;
int flag=1;
while(t>0)
{
if(t%10==6)
{
num=num*10+9;
t/=10;
}
else if(t%10==9)
{
num=num*10+6;
t/=10;
}
else if(t%10==8||t%10==1||t%10==0)
{
num=num*10+t%10;
t/=10;
}
else
{
flag=0;
break;
}
}
if(flag) if(i==num) sum++;
}
cout<<sum<<endl;
return 0;
}
//代码可能略微有点长,但大家应该能一目了然