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 ...
随机推荐
- 无聊系列 - C#中一些常用类型与java的类型对应关系
昨天在那个.NET转java群里,看到一位朋友在问C#的int 对应java的哪个对象,就心血来潮,打算写一下C#中一些基础性的东西,在java中怎么找. 1. 基础值类型 如:int,long,do ...
- python-9-列表的增删改查
前言 本节是:列表(list)的增删改查.什么是列表? 列表(list)是最常用的Python数据类型,它可以作为一个方括号[]内的逗号分割值出现.如:[1,5,"b"] 一.增 ...
- Oracle中TIMESTAMP时间的显示格式
Oracle中的TIMESTAMP数据类型很多人用的都很少,所以即使最简单的一个查询返回的结果也会搞不清楚到底这个时间是什么时间点. 例如: 27-1月 -08 12.04.35.877000 上午 ...
- Unity Shader 屏幕后效果——全局雾
Unity内置的雾效需要在每个shader中分别编写,造成了极大的不便.这里利用屏幕后处理产生可单独控制且自由度更高的雾效. 屏幕后雾效的本质在于,通过深度纹理重构出每个像素在世界空间中的位置,根据得 ...
- Tensorflow源码解析2 -- 前后端连接的桥梁 - Session
Session概述 1. Session是TensorFlow前后端连接的桥梁.用户利用session使得client能够与master的执行引擎建立连接,并通过session.run()来触发一次计 ...
- cmd控制台中文乱码解决办法
1.打开cmd控制台,在命令行输入chcp后回车可以查看到当前的字符编码.如果是乱码的话,这时通常是936,代表的是GBK编码. 2.在命令行输入chcp 65001后回车.65001代表的是UTF- ...
- LeetCode 1290. Convert Binary Number in a Linked List to Integer
题目 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListN ...
- .net core 3.0中的Json API
在.net core 3.0中,内置了一套新的json api,主要用于去除asp.net core对json.net的依赖,同时也提供了更好的性能(直接处理 UTF-8,而无需转码到 UTF-16) ...
- VS工具箱不显示DEV控件解决方法
VS工具箱中不显示DEV控件解决方法 之前先装vs,再装dev控件,vs工具栏中自动会加载并显示dev相关组件,但是,在更新vs(我用2017版)后,原先安装好的dev控件库不显示在vs的工具栏中了. ...
- mvc ajax跳转controller 的路径
mvc Controller : url: "../phone/index",(控制器名,方法名) 一般处理程序.ashx : url: "../bianji.ashx ...