蓝桥杯第六届省赛之奖券数目

蓝桥杯第六届省赛之奖券数目
奖券数目
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
请提交该数字(一个整数),不要写任何多余的内容或说明性文字。

首先拿到这个题,由于是选择题可以考虑一下用数学的方式加上计算机的运算能力来解决。
从单纯的数学角度来看可以考虑用逆向思维法,我们可以发现带4的个数不太好算但是不带4的个数好算就等于89999=52488,用代码实现的话就是如下代码:

#include<iostream>
using namespace std;
int main()
{
    
    
	//数学处理-没4的很好算
	//int res = 8*9*9*9*9;
	//cout<<res;
	int count,res,a,component;
	int inf=0;
	count = 99999-10000+1;
	for(int i=10000;i<=99999;i++)
	{
    
    
		a = i;
		while(a>0)
		{
    
    
			component = a%10;
			if(component == 4)
			{
    
    
				inf++;
				break;
			}
			a /= 10;
		}
	}
	res = count- inf;
	cout<<res;
	return 0;
}

答案:52488

最后分享一下我在做算法练习和OJ刷题时常常提醒自己的一句话:做算法题的练习过程总是比结果重要,要一步一步的在自己的想法上去进行优化,去体味思考的过程,思考的方式和方法永远处于学习过程中的绝巅。

猜你喜欢

转载自blog.csdn.net/weixin_46610759/article/details/107569739