【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天

这篇具有很好参考价值的文章主要介绍了【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

专栏: 蓝桥杯——每日四道填空题(两道真题+两道模拟题)
&离蓝桥杯已经不到一个月时间了,赶快刷起来吧,填空题一定别丢分!!
꒰•̀ᴗ•́꒱
另一个专栏是: 蓝桥杯——编程题刷题营(每日四题,两道模拟,两道真题)

目录

第一道真题(2016年省赛):寒假作业 | 答案:64

第二道真题(2019年省赛):质数  | 答案:17569

第三道模拟题(2022年第二次模拟赛): 拆分质数个数 |答案:33

第四道模拟题():答案:10


第一道真题(2016年省赛):寒假作业 | 答案:64

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

现在小学的数学题目也不是那么好玩的。 看看这个寒假作业:

  

   □ + □ = □
   □ - □ = □
   □ × □ = □
   □ ÷ □ = □

每个方块代表 1~13 中的某一个数字,但不能重复。

比如:

 6  + 7 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

以及:

 7  + 6 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案

你一共找到了多少种方案?

运行限制
最大运行时间:1s
最大运行内存: 128M

怎么说呢,dfs 应该是我首选,毕竟是填空题。

但是这题要注意,除法  ' / ' c++是整除的,但实际上3 / 2   !=  1,是1.5。

#include<iostream>
using namespace std;
int b[20] , t = 13 ;  //b[]存储每次选中的值, 
long long ans=0;
bool used[20]; //选中的,要排除掉,避免重复使用。
void dfs(int s){
  if(s==13){ //已经到了最后一个数了,说明已经选择好了一种方案。
          ans++;
          return;
      }
  if(s==3 && b[0]+b[1]!=b[2]) return;  //加法已经选入后,看是否满足条件
  if(s==6 && b[3]-b[4]!=b[5]) return;
  if(s==9 && b[6]*b[7]!=b[8]) return;
  if(s==12 && (double)b[9] / b[10] != b[11]) return; //注意转成浮点数计算,才是真真的除法。
  for(int i=0;i<t;i++){  
      if(!used[i]){
      used[i]=true;
      b[s]=i+1; //选中的值属于[1 , 13]
      dfs(s+1);
      used[i]=false;}
  }
}
int main(){
    dfs(0); //从第一个空开始依次填数
    cout<<ans<<endl;
    return 0;
}

这题如果数学好,可以仔细手数,因为数据也不是很大。

# 6  + 7 = 13 变形:7+6=13  13-7=6  13-6=7
# 9  - 8 = 1  变形:9-1=8   1+8=9   8+1=9
# 3  * 4 = 12 变形:4*3=12  12/4=3  12/3=4
# 10 / 2 = 5  变形:10/5=2  2*5=10  5*2=10

# 加法:6+7=13  7+6=13 1+8=9   8+1=9
# 减法:9-8=1   9-1=8  13-7=6  13-6=7
# 乘法:3*4=12  4*3=12 2*5=10  5*2=10
# 除法:10/2=5  10/5=2 12/4=3  12/3=4

# 6,7,13 组合:2*2*4*2 = 32
# 1,8,9 组合:同上
#所以:
printf("64");

第二道真题(2019年省赛):质数  | 答案:17569

【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天

 找了一道真题,复习一下质数的判断。

质数:只能被1和自身整除的数。

首先是最容易理解的方法(耗时):

#include <iostream>
using namespace std;
int main()
{
  int num=3;//前三个为2,3,5
  for (int i = 6 ; ; i++){//从6开始判断
    int flag = 1;
    for (int j = 2 ; j < i ; j++){
      if (i%j == 0){
        flag = 0;
        break;
      }
    }  
    if (flag == 1){
      num ++;
    }
    if(num == 2019){
      cout<<i<<endl;
      break;
    }
  }
  return 0;
}

优化:孪生素数法(高效)

当然这里只是一道填空题,但是如果是编程题,还是有必要掌握这个方法的。

#include<iostream>
#include<cmath>
using namespace std;
bool is_prime(int num)
{
    if (num == 2 || num == 3)
        return true;
    if (num % 6 != 1 && num % 6 != 5)  //不在6的倍数的两侧一定不是素数
        return false;
    for (int i = 5; i <= sqrt(num); i += 6) 
        if (num % i == 0 || num % (i + 2) == 0)//在6的倍数两侧并不是一定就是质数,还要特判一下哦 
            return false;
    return true;
} 
int main()
{
    int i = 2; //素数
    int cnt = 0; //数量 
    while(true)
    {
        if(is_prime(i))
        {
            cnt++;
        }
        if(cnt == 2019)
        {
            break;
        }
        i++;
    }
    cout << i << endl;
    return 0;
}

第三道模拟题(2022年第二次模拟赛): 拆分质数个数 |答案:33

问题描述:

将2022拆分成不同的质数的和,请问最多拆分成几个?

 这里我特地找了一道 dfs + 质数判断 的题,练一下吧!

#include <bits/stdc++.h>
using namespace std;
 
vector<int> primes;
int mp[2023][2023] ; 
//为了记录下这条路径后面的“子节点”数量, 如果再次递归到这个父节点就直接返回它后面路径的“子节点个数” 
// 不写这个也可以,只是比较浪费时间 ,这样可以节约时间,学到了吗,哈哈! 
 
//bool is_prime(int x) {
//    for (int i = 2; i * i <= x; i ++) {
//        if (x % i == 0) return false;
//    }
//    return true;
//}
//或者:
bool is_prime(int num)
{
    if (num == 2 || num == 3)
        return true;
    if (num % 6 != 1 && num % 6 != 5)  //不在6的倍数的两侧一定不是素数
        return false;
    for (int i = 5; i <= sqrt(num); i += 6) 
        if (num % i == 0 || num % (i + 2) == 0)//在6的倍数两侧并不是一定就是质数,还要特判一下哦 
            return false;
    return true;
} 
 
int dfs(int cur, int idx) {
	int mx = 0;
    if (cur == 0) return 0;
    if (cur < primes[idx]) return -1;
    if (mp[cur][idx] != 0)  return mp[cur][idx];  //如果这条路径已经查询了,直接返回这条路径 上的节点数目 
    for (int i = idx; i < primes.size() && cur >= primes[i]; i ++) {
        mx = max(mx, 1 + dfs(cur - primes[i], i + 1));
    }
     mp[cur][idx] = mx;  //注意一定要在已经这里才记录下这条路径的子节点数目,因为这条路径不满足上面条件代码才走到这的,
	 //说明这条路径已经明确了。 
     return mx;
}
 
int main() {
    for (int i = 2; i <= 2022; i ++) {
        if (is_prime(i)) primes.push_back(i);
    }
    cout << dfs(2022, 0) << endl;
 
    return 0;
}

第四道模拟题(2022年第四次模拟赛):答案:10

【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天

 贪心思想,每次都尽可能令左子树比右子树多 1 个节点(反之也可),注意根节点是第0层。

//答案 10
#include <bits/stdc++.h> 
using namespace std;

int main() {
	int cnt = 2021, d = 0;
	while (cnt != 1) {
		cnt--;
		cnt = cnt / 2 + (cnt % 2);
		d++;
	}
	cout << d << endl;
	return 0;
}

当然也可以找规律,这是也是我们平时做题重要的思想,毕竟用代码写,和用笔算是两码事。

比如结点数为6,我们画图知道它应该是2层,当结点数是11时,它应该是3层。

你可以大胆的猜测, <= 6 <=【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天 ;  <= 11 <= 【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天

发现,层数和结点数满足上述关系,那么接下来就用一个循环来查找就OK了。

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	for (int i = 0 ; i <= 31 ; ++i)
	{
		if(pow(2 , i) <= 2021 && pow(2 , i + 1) >= 2021){
			cout<<i<<endl;
			break;
		}
	}
	return 0;
} 

【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天文章来源地址https://www.toymoban.com/news/detail-400417.html

到了这里,关于【蓝桥杯】每日四道填空题(两道真题+两道模拟题)| 第四天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷5

      题目来源于小码王公众号,有更多答案解析可评论区留言   第一题 题目:输入一个整数n,计算其各位上数字之和,并用汉语写出每一位数字并输出。 【输入格式】一个整数 【输出格式】再一行内输出数字之和的每一位对应的汉字 【输入样例】1234 【输出样例】一零    

    2024年02月16日
    浏览(41)
  • 金仓数据库模拟题

    1、 在KingbaseESv8的数据目录中,系统表保存在哪个目录下()? [单选题] * A.base B.global(正确答案) C.sys_tblspc D.audit 2、以下哪些进程是KingbaseESv8的后台进程() ? [单选题] * A.checkpointer(正确答案) B.kworker C.es_server D.sys_ctl 3、下列属于KingbaseES的共享缓存区的是() ? [单选题] * A.wo

    2024年01月21日
    浏览(52)
  • openstack COA 考试模拟题

    version: 201911 You are the cloud administrator of a fictitious company named ESCloud. You have been tasked with setting up Openstack Environments for marketing and finance departments. Task 1 The company has two departments, named marketing and finance. For each of the two departments create projects with details below: Project Name: marketing finance Descr

    2023年04月19日
    浏览(45)
  • hw大一Python模拟题详解

    一、选择题 1、关于Python语言的特点,以下选项描述正确的是( B )。 A.Python语言不支持面向对象。            B.Python语言是解释型语言。 C.Python语言是编译型语言。              D.Python语言是非跨平台语言。 解析: Python 是一种解释型、面向对象、动态数据类型

    2024年01月16日
    浏览(41)
  • pta模拟题——7-34 刮刮彩票

    “刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示: 每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 3×3 的“九宫格”形式排布在彩票上。 在游戏开始时能看见一个位置上的数字,其他位置上的数字均不可见。你可

    2024年02月04日
    浏览(49)
  • 软考高项:信息网络安全模拟题

    280、在TCP/IP的体系架构中,ARP协议位于(),它的作用是()。 A.网络层将MAC地址解析为IP地址 B.链路层将MAC地址解析为IP地址 C.网络层将IP地址解析为MAC地址 D.链路层将lP地址解析为MAC地址 正确答案:D 解析:在TCP/IP的体系架构中,ARP协议位于链路层,它的作用是将IP地址解析为MAC地址

    2024年02月13日
    浏览(44)
  • 736. Lisp 语法解析 : DFS 模拟题

    这是 LeetCode 上的 736. Lisp 语法解析 ,难度为 困难 。 Tag : 「DFS」、「模拟」、「哈希表」 给你一个类似 Lisp 语句的字符串表达式 expression ,求出其计算结果。 表达式语法如下所示: 表达式可以为整数, let 表达式, add 表达式, mult 表达式,或赋值的变量。表达式的结果总是

    2024年02月03日
    浏览(45)
  • Vj程序设计复杂模拟题训练

    飞飞很喜欢打牌,他决定苦练牌技,终成赌神! 飞飞有  A  ×  B  张扑克牌。每张扑克牌有一个大小(整数,记为 a,范围区间是 0 到  A  - 1)和一个花色(整数,记为 b,范围区间是 0 到  B  - 1。 扑克牌是互异的,也就是独一无二的,也就是说没有两张牌大小和花

    2023年04月19日
    浏览(53)
  • 软考高项:信息网络安全知识模拟题

    620、以下哪个场景属于身份鉴别过程()。 A.用户依照提示输入用户名、口令和短信验证码,成功登录该应用。 B.用户在网络上共享了的一份加密的pdf文档,以阻止其他人下载查看文档中的内容。 C.用户给自己编写的文档加上水印。 D.用户在网上下载了一份带水印的文档,去掉

    2024年02月05日
    浏览(42)
  • csp-j/s模拟题详细题解

    题目描述 一天小理买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着小理发现瓶子实在太多了,于是他决定保留不超过K个瓶子,每次他选择两个当前含水量相同的瓶子合并。(即把一个瓶子的水全部倒进另一个里然后把空瓶丢弃) (注:不能丢弃有水

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包