2016年蓝桥别A组模拟训练
1. 网友年龄
某君新认识一网友。 当问及年龄时,他的网友说: “我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”
请你计算:网友的年龄一共有多少种可能情况?
提示:30岁就是其中一种可能哦. 请填写表示可能情况的种数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
代码:
#include <iostream> #define FF(a,b) for(a=0;a<b;a++)
#define F(a,b,c) for(a=b;a<c;a++)
#define O printf
#define I scanf
#define MAX (1<<30)+1
#define LEN 1010 using namespace std; int ans=; bool isOk(int x){
int cd=x-;
if((cd%)*+cd/==x){
ans++;
cout<<x<<','<<cd<<endl;
}
} int main(){
int i;
F(i,,) isOk(i);
cout<<ans<<endl;
return ;
}
结果:7
,
,
,
,
,
,
, --------------------------------
Process exited after 0.5086 seconds with return value
请按任意键继续. . .
用时:3min
2. 生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
代码:
#include <iostream> #define FF(a,b) for(a=0;a<b;a++)
#define F(a,b,c) for(a=b;a<c;a++)
#define O printf
#define I scanf
#define MAX (1<<30)+1
#define LEN 1010 using namespace std; int main(){
int x,n;
FF(x,)
FF(n,)
if((x+(x+n-))*n==)
cout<<x<<"岁开始,过了"<<n<<"年"<<endl ;
return ;
}
结果:26
26岁开始,过了8年 --------------------------------
Process exited after 0.5775 seconds with return value
请按任意键继续. . .
用时:5min
3. 方格填数
如下的10个格子
![]()
填入0~9的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
代码:(强行全排列后判断)
#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdlib.h> #define FF(a,b) for(a=0;a<b;a++)
#define F(a,b,c) for(a=b;a<c;a++)
#define O printf
#define I scanf
#define MAX (1<<30)+1
#define LEN 1010 using namespace std; int ans=;
int p[]={MAX,,,,,,,,,,,MAX};
void judge(){
int i,j;
FF(i,){ //竖向比较
FF(j,){
if(abs(p[i*+j]-p[i*+j+])==) return;
}
}
FF(i,){ //竖向比较
FF(j,){
if(abs(p[i*+j]-p[i*+j+])==) return;
}
}
FF(i,){ //正对角线
F(j,,){
if(abs(p[i*+j]-p[i*+j+])==) return;
}
}
FF(i,){ //副对角线
FF(j,){
if(abs(p[i*+j]-p[i*+j+])==) return;
}
}
ans++;
} int main(){
do{
judge() ;
}while(next_permutation(p+,p+));
cout<<ans<<endl;
return ;
}
结果:1580
--------------------------------
Process exited after 0.7154 seconds with return value
请按任意键继续. . .
用时:约30min
4. 快速排序
排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。
下面的代码是一种实现,请分析并填写划线部分缺少的代码。
#include <stdio.h> void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
} int partition(int a[], int p, int r)
{
int i = p;
int j = r + ;
int x = a[p];
while(){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
______________________;
return j;
} void quicksort(int a[], int p, int r)
{
if(p<r){
int q = partition(a,p,r);
quicksort(a,p,q-);
quicksort(a,q+,r);
}
} int main()
{
int i;
int a[] = {,,,,,,,,,,,};
int N = ; quicksort(a, , N-); for(i=; i<N; i++) printf("%d ", a[i]);
printf("\n");
return ;
}
填写:
swap(a,j,p)
5. 消除尾一
下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0
如果最后一位是0,则原数字保持不变。
如果采用代码中的测试数据,应该输出:
->
->
请仔细阅读程序,填写划线部分缺少的代码。
#include <stdio.h> void f(int x)
{
int i;
for(i=; i<; i++) printf("%d", (x>>(-i))&);
printf(" "); x = _______________________; for(i=; i<; i++) printf("%d", (x>>(-i))&);
printf("\n");
} int main()
{
f();
f();
return ;
}
我的答案是 (-(~x))&x
标准答案是 x&(x+1)
6. 寒假作业
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
每个方块代表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
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
计算次数13!,编码复杂度低但时间复杂度高的算法:(用时255秒)
#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdlib.h> #define FF(a,b) for(a=0;a<b;a++)
#define F(a,b,c) for(a=b;a<c;a++)
#define O printf
#define I scanf
#define MAX (1<<30)+1
#define LEN 1010 using namespace std; int p[]={,,,,,,,,,,,,} ;
int ans; void judge(){
if(p[]+p[]==p[] && p[]-p[]==p[] && p[]%p[]== && p[]/p[]==p[] && p[]*p[]==p[] ){
puts("ok");
ans++;
}
} int main(){
do{
judge() ;
}while(next_permutation(p,p+));
cout<<ans<<endl;
return ;
}
剪枝优化后,执行时间为1.4秒:
#include <iostream>
#include <algorithm>
#include <math.h>
#include <stdlib.h> #define FF(a,b) for(a=0;a<b;a++)
#define F(a,b,c) for(a=b;a<c;a++)
#define O printf
#define I scanf
#define MAX (1<<30)+1
#define LEN 20 using namespace std; int num[LEN];
int used[LEN];
int ans=; void dfs(int step) {
if(step==){
if(num[]%num[]) return;
if(num[]/num[]!=num[]) return;
ans++;
return;
}
if(step==)
if(num[]+num[]!=num[]) return;
if(step==)
if(num[]-num[]!=num[]) return;
if(step==)
if(num[]*num[]!=num[]) return;
for(int i=;i<=;i++) if(!used[i]){
used[i]=;
num[step]=i;
dfs(step+);
used[i]=;
}
} int main(){
dfs();
cout<<ans<<endl;
return ;
}
2016年蓝桥别A组模拟训练的更多相关文章
- 2016年蓝桥杯B组C/C++省赛(预选赛)题目解析
2016年蓝桥杯B组C/C++ 点击查看2016年蓝桥杯B组省赛试题(无答案版) 第一题:煤球数目 题解 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个( ...
- 2016年蓝桥杯B组C/C++省赛(预选赛)试题
2016年蓝桥杯B组C/C++ 点击查看2016年蓝桥杯B组省赛题目解析(答案) 第一题:煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成 ...
- 2016年蓝桥杯B组C/C++决赛题解
2016年第七届蓝桥杯B组C/C++决赛题解 2016年蓝桥杯B组C/C++决赛题目(不含答案) 1.一步之遥 枚举解方程,或者套模板解线性方程 #include<bits/stdc++.h&g ...
- 2016年蓝桥杯B组C/C++决赛题目
2016年第七届蓝桥杯B组C/C++决赛题目 点击查看2016年第七届蓝桥杯B组C/C++决赛题解 1.一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的 ...
- 2018年第九届蓝桥杯B组题C++汇总解析-fishers
2018年第九届蓝桥杯B组题C++解析-fishers 题型 第一题:第几天 第二题:明码 第三题:乘积尾零 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 ...
- 黄金连分数|2013年蓝桥杯B组题解析第四题-fishers
黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次 ...
- 啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers
啤酒和饮料|2014年第五届蓝桥杯B组题解析第一题-fishers 啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请 ...
- 2018年蓝桥杯A组C/C++决赛题解
2018年第九届蓝桥杯A组C/C++决赛题解 点击查看视频题解 点击查看2018年蓝桥杯A组C/C++决赛题目(不含答案) 1:三角形面积 画个图,求三角形面积,可以用外接长方形 - 其他多余区域面积 ...
- 2018年蓝桥杯A组C/C++决赛题目
2018年蓝桥杯A组C/C++决赛题目 2018年蓝桥杯A组C/C++决赛题解 1:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5 ...
随机推荐
- R语言两自定义矩阵的基本运算-实例
#sink("matrix_history.txt") cat("请输入矩阵的行和列数,“,”号隔开,建议行 等于列 数:") number<-scan( ...
- Redis集群模式介绍
前言: 一.为什么要使用redis 1,解决应用服务器的cpu和内存压力 2,减少io的读操作,减轻io的压力(内存中读取) 3,关系型数据库扩展性,不强,难以改变表的结构 二.优点 1,nosql数 ...
- java基础之----java常见异常及代码示例
概述 java中有两种错误类型,一个是Exception,一个是Error,都在java.lang包下,一般来说程序中的try...catch捕获的是Exception类型的异常,而Error类型的错 ...
- Mysql中使用JDBC流式查询避免数据量过大导致OOM
一.前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM. 二.如何使用 2.1 之前查询 public void selectData ...
- flink 注册函数示例
需求 (filter): 现在有这么一个需求,统计出现在纽约的行车记录.这里我们需要进行一个过滤的操作,我们需要有个自定义的 UDF ,具体思路是,表里面有经度和维度这两个字段,通过这个可以来开发一个 ...
- vue中toggle切换的3种写法
前言:查看下面代码,在任意编辑器中直接复制粘贴运行即可 1:非动态组件(全局注册2个组件,借用v-if指令和三元表达式) <!DOCTYPE html> <html> < ...
- JDBC与Druid简单介绍及Druid与MyBatis连接数据库
序言 java程序与数据建立连接,首先要从jdbc说起,然后直接上阿里认为宇宙最好的数据库连接池druid,然后再说上层程序对象与数据源映射关联关系的orm-mybatis. JDBC介绍 JDBC( ...
- MS14-068域提权漏洞复现
MS14-068域提权漏洞复现 一.漏洞说明 改漏洞可能允许攻击者将未经授权的域用户账户的权限,提权到域管理员的权限. 微软官方解释: https://docs.microsoft.com/zh-cn ...
- App_Code下类无法引用问题
App_Code 下创建的.cs文件仅仅是“内容”不是代码.设置文件为“编译”就可正常引用.
- Python - 正则表达式 - 第二十二天
正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单 ...