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 ...
随机推荐
- [Codeforces1250E] The Coronation
[Codeforces1250E] The Coronation The Coronation 又是一道并查集...最近做的并查集咋这么多... 思路 首先,维护元素间关系的题想到并查集. 因为这里涉 ...
- redis命令之 ----key(键)
DEL DEL key [key ...] 删除给定的一个或多个 key . 不存在的 key 会被忽略. DUMP DUMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE ...
- 图片与文本基础(html和css)
图片与文本基础 -----注释添加可以用/**/ 5.1图片 1.gif图片:最大颜色数256,保存时采用无损压缩 2.JPEG图片:可以包含1670万种颜色,保存时采用有损压缩,压缩率小的质量更高. ...
- oracle的instr()函数
我们知道很多语言都提供了indexOf()和lastIndexOf()函数,以便能查找某个字符在某个字符串中的出现的位置和最后一次出现的位置. 但是Oracle没有提供这两个函数,事实上,它提供了一个 ...
- 一小段 Dapper 的简单示例
关于 Dapper 的介绍,请参考:Dapper - 一款轻量级对象关系映射(ORM)组件,DotNet 下 using System; using System.Collections.Generi ...
- Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(五)
直接贴代码了: NewsInfo 实体类: public class NewsInfo { public int NewsInfoId { get; set; } public string News ...
- Linux查看日志常用命令(转载)
转自: https://www.cnblogs.com/kbkiss/p/7567725.html -------------------------------------------------- ...
- 微信分享网页时自定义缩略图和简介(.net版本)
要实现微信分享网页时自定义缩略图和简介,需开发者在公众平台网站中创建公众号.获取接口权限后,通过微信JS-SDK的分享接口,来实现微信分享功能. 下面来说明实现步骤. 第一部分 准备步骤 步骤一:注册 ...
- trailhead学习之 LWC for Aura Developers
本篇查看https://trailhead.salesforce.com/content/learn/modules/lightning-web-components-for-aura-develop ...
- windows小乌龟和git使用
一.安装git for windows 首先下载git for windows客户端http://msysgit.github.io/ 安装过程没什么特别的,不停next就ok了 图太多就不继 ...