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 ...
随机推荐
- 三、Spring注解之@Import
spring注解之@Import [1]@Import 参数value接收一个Class数组,将你传入的类以全类名作为id加入IOC容器中 比较简单,此处不做详细解释 [2]ImportSel ...
- 【Oracle】rman基于时间点恢复
rman基于时间点恢复 场景: 由于某研究的误操作,导致财务模块的数据丢失,如何使用rman基于时间点恢复数据. 思路 1.克隆数据库的虚拟机,直接对数据库的数据进行恢复 RMAN> shutd ...
- 【前端知识体系-JS相关】对移动端和Hybrid开发的理解?
1.hybrid是什么,为何使用hybrid呢? 概念: hybrid就是前端和客户端的混合开发 需要前端开发人员和客户端开发人员配合完成 某些环节也可能会涉及到server端 大前端:网页.APP. ...
- poj-2803 Defining Moment
Defining Moment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1660 Accepted: 760 De ...
- F#周报2019年第24期
新闻 ML.NET 1.1发布与模型构建器升级 .NET Core 3.0预览版6发布 尝试新的System.Text.Json API F#调用Infer.NET 匿名记录类型文档 了解FableC ...
- 配置 ASP.NET Core 请求(Request)处理管道
配置 ASP.NET Core 请求(Request)处理管道 在本节中,我们将讨论使用中间件组件为 asp.net core 应用程序配置请求处理管道. 作为应用程序启动的一部分,我们要在Confi ...
- C#: 解决Fody is only supported on MSBuild 16 and above
背景信息: 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,在拷贝给到别人使用 ...
- GIT版本管理工具教程
目录 GIT版本管理工具教程 一 Git初始化 二 简单指令使用 基本操作 简单总结 三 Git进阶 Git三大区域 Git回滚 Git分支 Git工作流 四 Github代码管理仓库 第一步:注册G ...
- 深入浅出JVM的锁优化案例
锁优化 适应性自旋(Adaptive Spinning) 线程阻塞的时候,让等待的线程不放弃cpu执行时间,而是执行一个自旋(一般是空循环),这叫做自旋锁. 自旋等待本身虽然避免了线程切换的开销,但它 ...
- 一句DELETE引发的加班(Mysql 恢复Delete删除的数据)
本机用的Navicat连mysql测试DB又连了正式DB,因为本地与正式要频繁操作所以都打开了很多查询,本来要DELETE删除测试DB的数据,没看清在正式环境执行了.共删除了325条数据,然后在网上找 ...