C++ 神奇的魔镜

文章描述了一个关于魔镜的故事,其中的魔镜会回答问题且仅说真话。问题是找到在给定范围内的所有‘神奇数字’,即翻转180度后不变的数字。文章提供了一段C/C++代码作为解决方案,计算从n到m之间这样的数字的数量。
摘要由CSDN通过智能技术生成

神奇的魔镜

时间限制: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;
}
//代码可能略微有点长,但大家应该能一目了然

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值