蓝桥杯2015年b组题目

举报
秋名山码民 发表于 2022/05/26 23:05:03 2022/05/26
【摘要】 2015年b组:奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。请提交该数字(一个整数),不要写任何多余的内容或说明性文字。思路:不要4,在5位数中剔除4...

2015年b组:奖券数目

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

思路:不要4,在5位数中剔除4即可,枚举,累加没有4的,下面我们用代码来实现一下这个操作、

#include<iostream>
using namespace std;
//筛选出不含4的数
bool check(int x) {
	while (x) {
		if (x % 4 == 0)
			return false;
		x /= 10;
	}
	return true;
}
int main()
{
	int sum = 0;//定义数目
	for (int i = 10000; i <= 99999; i++) {
		if (check(i))	sum++;
	}
	cout << sum;
	return 0;
}

或者拆开来看

#include<iostream>
using namespace std;
int main()
{
	int cnt = 0;
	for (int a = 1; a <= 9; a++)
	{
		if (a != 4)
			for (int b = 0; b <= 9; b++)
			{
				if (b != 4)
					for (int c = 0; c <= 9; c++)
					{
						if (c != 4)
							for (int d = 0; d <= 9; d++)
							{
								if (d != 4)
									for (int e = 0; e <= 9; e++)
									{
										if (e != 4)
											cnt++;
									}
							}
					}
			}
	}
	cout << cnt << endl;
    return 0;
}

2015b 星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19
请严格按照格式书写。不能出现其它文字或符号。

实际上在蓝桥杯中碰到时间问题填空的情况下,excel是最简单的,我们先来用excel来得出结果,最后再用代码实现一遍
在这里插入图片描述
不怕你们笑话我,答案是2017-08-05,定时1000天,看比如,所以说不要在这里踩坑,下面我们看代码实现

#include<iostream>
using namespace std;
//判断平年闰年
int days[13] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
bool check(int x) {
	if (x % 400 == 0 || (x % 100 != 0 && x % 4 != 0)) {
		return true;
	}
	return false;
}
int main() {
	bool is_run = false;
	int y = 2014, m = 11, d = 9;
	for (int i = 1; i <= 1001; i++) {
		d++;
		if (m == 2) {
			if (is_run) {
				if (d >= 29) m++, d = 0;
			}
			else {
				if (d >= 28) m++, d = 0;
			}

		}
		else if (d >= days[m - 1]) m++, d = 0;
		if (m > 12) {
			y++;
			m = 1;
			is_run = check(y);
		}
	}
	printf("%d-%02d-%02d", y, m, d);
	return 0;
}

2015 b 三羊献瑞

在这里插入图片描述

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

思路:乍一看没有思路,我们仔细来看(纯废话……)
填空题,没有任何的限制,直接暴力吧,后面我们再看,要脑子的算法

#include<iostream>
using namespace std;
int main()
{
	int a,b,c,d,f,g,h;
	int numOne,numTwo,sum;
	for(a=2;a<=9;a++)
	{
		for(b=0;b<=9;b++)
		{
			for(c=0;c<=9;c++)
			{
				for(d=0;d<=9;d++)
				{
					for(f=0;f<=9;f++)
					{
						for(g=0;g<=9;g++)
						{
							for(h=0;h<=9;h++)
							{
								if(a!=b && a!=c && a!=d && a!=f && a!=g && a!=h
								&& b!=c && b!=d && b!=f && b!= g &&b!=h
								&& c!=d && c!=f && c!= g && c!=h
								&& d!=f && d!=g &&d!=h
								&& f!=g && f!=h
								&& g!=h
								&& a!=1 && b!=1 && c!=1 && d!=1 && f!=1 && g!=1 && h!=1)
								{
									numOne=a*1000 + b*100 + c*10 + d;
									numTwo=1*1000 + f*100 + g*10 + b;
									sum=1*10000 + f*1000 + c*100 + b*10 + h;
									if(sum==(numOne + numTwo))
									{
										cout<<1<<f<<g<<b<<endl;
									}						
								}	
							}							
						}
					}
				}
			}
		}		
	}
	return 0;
} 

我们把每个数字都带进去进行一个简单的推导
在这里插入图片描述

#include<iostream>
using namespace std;
int main() {
	for (int b = 2; b <= 6; b++) {
		for (int d = 2; d <= 7; d++) {
			if (d == b)	continue;
			if (d == b + 1) continue;
			if (b + d <= 10)	continue;
			int h = b + d - 10;
			if (h == b || h == d || h == b + 1)	continue;
			printf("%d%d%d%d\n", 1, 0, 8, b);
		}
	}
	return 0;
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。