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组模拟训练的更多相关文章

  1. 2016年蓝桥杯B组C/C++省赛(预选赛)题目解析

    2016年蓝桥杯B组C/C++ 点击查看2016年蓝桥杯B组省赛试题(无答案版) 第一题:煤球数目 题解 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个( ...

  2. 2016年蓝桥杯B组C/C++省赛(预选赛)试题

    2016年蓝桥杯B组C/C++ 点击查看2016年蓝桥杯B组省赛题目解析(答案) 第一题:煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成 ...

  3. 2016年蓝桥杯B组C/C++决赛题解

    2016年第七届蓝桥杯B组C/C++决赛题解 2016年蓝桥杯B组C/C++决赛题目(不含答案) 1.一步之遥 枚举解方程,或者套模板解线性方程 #include<bits/stdc++.h&g ...

  4. 2016年蓝桥杯B组C/C++决赛题目

    2016年第七届蓝桥杯B组C/C++决赛题目 点击查看2016年第七届蓝桥杯B组C/C++决赛题解 1.一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的 ...

  5. 2018年第九届蓝桥杯B组题C++汇总解析-fishers

    2018年第九届蓝桥杯B组题C++解析-fishers 题型 第一题:第几天 第二题:明码 第三题:乘积尾零 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 ...

  6. 黄金连分数|2013年蓝桥杯B组题解析第四题-fishers

    黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次 ...

  7. 啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers

    啤酒和饮料|2014年第五届蓝桥杯B组题解析第一题-fishers 啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请 ...

  8. 2018年蓝桥杯A组C/C++决赛题解

    2018年第九届蓝桥杯A组C/C++决赛题解 点击查看视频题解 点击查看2018年蓝桥杯A组C/C++决赛题目(不含答案) 1:三角形面积 画个图,求三角形面积,可以用外接长方形 - 其他多余区域面积 ...

  9. 2018年蓝桥杯A组C/C++决赛题目

    2018年蓝桥杯A组C/C++决赛题目 2018年蓝桥杯A组C/C++决赛题解     1:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5 ...

随机推荐

  1. java基本类型包装类之间的值比较问题

    废话不多说,先看代码 Integer a = 2;Integer b = 2;if(a==b){ System.out.println("相等");}else{ System.ou ...

  2. java.sql.SQLException: Could not establish connection to 192.168.8.111:10000/default: java.net.ConnectException: Connection refused: connect at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveC

    java.sql.SQLException: Could not establish connection to 192.168.8.111:10000/default: java.net.Conne ...

  3. LeetCode 209:最小长度的子数组 Minimum Size Subarray Sum

    公众号: 爱写bug(ID:icodebugs) 作者:爱写bug 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子 ...

  4. POJ 1094 (传递闭包 + 拓扑排序)

    题目链接: POJ 1094 题目大意:有 1 ~ N 个大写字母,且从 A 开始依次 N 个.再给你 M 个小于的关系,比如 A < B ,让你判断三种可能: 1.在第 i 个关系罗列之后,是 ...

  5. pixijs shader 扫光加强版

    pixijs shader 扫光加强版 const app = new PIXI.Application({ transparent: true }); document.body.appendChi ...

  6. 更改hosts文件解决 Git无法连接到github

    问题描述 inmeditation@sunlizhao MINGW64 ~/Desktop/hexob(1) $ ssh -T git@github.com ssh: connect to host ...

  7. SpringBoot入门-SpringBoot性能优化

    SpringBoot启动优化 显示声明扫包范围: 即不使用@SpringBootApplication默认扫包,使用@ComponentScan(basePackages = { "com. ...

  8. [KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配

    字符串匹配 [题目描述] 对于一个字符集大小为C的字符串pp,可以将任意两个字符在p中的位置进行互换,例如p=12321,交换1.21.2得到21312,交换1.4得到42324,交换可以进行任意次. ...

  9. SQL Server in Docker - 还原数据库

    SQL Server in Docker 还原数据库 上一会演示了如果在Docker环境下安装SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上. 使用winscp上传ba ...

  10. 【EasyExcel】使用easyExcel过程中,项目报错的解决集合

    报错:Can not close IO [ERROR] 2019-11-02 13:51:21.210 [ProExportSkuDataJob-1455-TaskThread-1] [com.dma ...