博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018 蓝桥杯省赛 B 组模拟赛(五)题目及解析
阅读量:7193 次
发布时间:2019-06-29

本文共 2388 字,大约阅读时间需要 7 分钟。

A. 结果填空:矩阵求和

给你一个从 n×n 的矩阵,里面填充 1 到 n×n 。例如当 n 等于 3 的时候,填充的矩阵如下。

1 2 34 5 67 8 9

现在我们把矩阵中的每条边的中点连起来,这样形成了一个新的矩形,请你计算一下这个新的矩形的覆盖的数字的和。比如,n = 3 的时候矩形覆盖的数字如下。

24 5 6  8

那么当 n 等于 101 的时候,矩阵和是多少?

题目解析:

这题画一个7×7的矩阵观察起来会比较直观。矩形边中点的连线包括边上的 元素和所有处于边界点之间的元素。在找准行列关系之后就很简单了。

填空答案如下:

#include 
using namespace std;int main() {// cout << "/*请在这里填入答案*/" << endl; cout << "26020201" << endl; return 0;}

题解代码如下:

#include 
#include
using namespace std;int a[1000][1000];int main(){ int n; cin>>n; //n=101; int p=1; for(int i=0;i
=m-i && j<=m+i){ sum+=a[i][j]; }else if(i>m && j>=m-(n-i-1) && j<=m+(n-i-1)){ sum+=a[i][j]; } } } cout<

B. 结果填空:素数个数

用 0,1,2,3⋯7 这 8 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。

提示:以 0 开始的数字是非法数字。

题目解析:

这题考察全排列,注意第一个数字不能是0。

填空答案如下:

#include 
using namespace std;int main() {// cout << "/*请在这里填入答案*/" << endl; cout << "2668" << endl; return 0;}

题解代码如下:

#include 
#include
#include
using namespace std;int isPrime(int n){ for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return 0; } return 1;}int main(){ int cnt=0; int a[8]={0,1,2,3,4,5,6,7}; do{ if(a[0]==0) continue; int sum=0; for(int i=0;i<8;i++){ sum=sum*10+a[i]; } if(isPrime(sum)) cnt++; }while(next_permutation(a,a+8)); cout<

D. 代码填空:快速幂

一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 O(log(n)) 的时间内算出结果呢?

代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y mod p的结果。

题目解析:

这题主要考察y & 1。&是位与操作符,运算法则是在二进制数下,相同位的两个数字都为1,则为1;若有一个不为1,则为0。
y & 1做位与操作,y&1是y和1做“按位与”运算,1的二进制只有末位是1,所以y & 1就是只保留y的末位(二进制)。y & 1就表示了y的奇偶性。y & 1 == 1为奇数,反之为偶数。

填空答案如下:

#include 
using namespace std;int pw(int x, int y, int p) { if (!y) { return 1; }// int res = /*在这里填写必要的代码*/; int res = pw(x,y-1,p)+pw(x,y-1,p)*!(y&1); if (y & 1) { //判断奇偶数,y&1==1为奇数,反之为偶数 res = res * x % p; } return res;}int main() { int x, y, p; cin >> x >> y >> p; cout << pw(x, y, p) << endl; return 0;}

E. 代码填空:末尾零的个数

N! 末尾有多少个 0 呢?

N! = 1 x 2 x ··· x N。

代码框中的代码是一种实现,请分析并填写缺失的代码。

填空答案如下:

#include 
using namespace std;int main() { int n, ans = 0; cin >> n; while (n) { //ans += /*在这里填写必要的代码*/; ans += n/=5; } cout << ans << endl; return 0;}

转载地址:http://pzxkm.baihongyu.com/

你可能感兴趣的文章
善用rel=’canonical’,权重更集中(转)
查看>>
微信控 控微信
查看>>
UDP中使用bind和connect的作用
查看>>
Yii url重写
查看>>
Shell编程 - 流控制
查看>>
Windows Phone7 VS iPhone&Android 平台优劣势邀您参与PK [送书活动以及样章阅读]
查看>>
YUV格式详解
查看>>
内核开发基础——make mrproper及mrproper的含义
查看>>
MSSQL常用操作及方法总结
查看>>
MVC 4 教程
查看>>
windows server 2012 QQ交流群:256418966
查看>>
[转]SQLiteOpenHelper
查看>>
QT在CT上的安装及运行
查看>>
Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
查看>>
有用网站
查看>>
Android——事件处理模型一(基于回调机制的事件处理)(转)
查看>>
win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
查看>>
【转】iOS自动布局进阶用法
查看>>
其实没那么复杂!探究react-native通信机制
查看>>
利用 IHttpModule 自定义 HTTP 处理模块
查看>>