2018蓝桥杯试题
蓝桥杯历届试题题目总结
蓝桥杯历届试题题⽬总结后天就是蓝桥杯省赛了,今天总结⼀下这段时间做的蓝桥杯历届试题,还是⼀个⼀个题⽬的来吧1,历届试题矩阵翻硬币 这个题⽬说真的,我不会,在⽹上看了某神⽜的题解答案为 ans=sqrt(n)*sqrt(m),具体怎么证明的我也不知道2,历届试题兰顿蚂蚁 这个题⽬怎么说呢,应该是送分题,直接模拟就可以了,这⾥就不说了。
3,历届试题分糖果 这个题⽬好像之前在哪⾥做过,也是⼀道模拟题,弄两个数组搞⼀下就可以了 下⾯是代码#include<bits/stdc++.h>using namespace std;#define maxn 100+10int a[2][maxn],n;bool ok(int cur){for (int i=2;i<=n;i++) if (a[cur][i]!=a[cur][i-1]) return0;return1;}int main(){while(scanf("%d",&n)!=EOF){int cur=0,ans=0;for (int i=1;i<=n;i++) scanf("%d",&a[cur][i]);while(!ok(cur)){for (int i=1;i<=n;i++) {if (a[cur][i]%2) {a[cur][i]++; ans++;}}for (int i=1;i<n;i++) a[1-cur][i]=a[cur][i+1]/2; a[1-cur][n]=a[cur][1]/2;for (int i=1;i<=n;i++) a[1-cur][i]+=(a[cur][i]/2);cur=1-cur;}printf("%d\n",ans);}return0;}View Code4,历届试题⼩朋友排队 这个题让我想起了去年武⼤校赛的⼀道题,我永远忘不了,求最⼩交换次数就是求逆序对数,⽽这个题要算出每个⼩朋友交换的次数,故我们从前⾯求⼀次,再从后⾯求⼀次就可以了,我这⾥⽤树状数组来求#include<bits/stdc++.h>using namespace std;#define maxn 1000000+10#define LL long longint a[maxn],n,b[maxn],num[maxn],c[maxn];LL sum[maxn];void init(){sum[0]=0;for (LL i=1;i<maxn;i++) sum[i]=sum[i-1]+i;}int lowbit(int x){return x&(-x);}void add(int x){while(x<maxn){a[x]++;x+=lowbit(x);}}int get_sum(int x){int ans=0;while(x>0){ans+=a[x];x-=lowbit(x);}return ans;}int main(){init();while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));memset(num,0,sizeof(num));for (int i=1;i<=n;i++) scanf("%d",&b[i]),c[i]=b[i];sort(c+1,c+n+1);int m=unique(c+1,c+n+1)-c;for (int i=1;i<=n;i++) b[i]=lower_bound(c+1,c+m+1,b[i])-c;for (int i=1;i<=n;i++){num[i]+=get_sum(maxn-1)-get_sum(b[i]);add(b[i]);}memset(a,0,sizeof(a));for (int i=n;i>=1;i--){num[i]+=get_sum(b[i]-1);add(b[i]);}LL ans=0;//for (int i=1;i<=n;i++) printf("%d ",num[i]); printf("\n");for (int i=1;i<=n;i++) ans+=sum[num[i]];printf("%I64d\n",ans);}return0;}View Code5,历届试题波动数列 这个题⽬⼀看,就知道是枚举a出现的次数和b出现的次数,⽹上有⼈⽤BFS和DFS来做,想都不想,肯定超时可以设第⼀个数为x,则 S=n*x+sgm i*(a or -b),则知道a和b的数⽬为n*(n-1)/2,则可以枚举a的数⽬A,知道A后,就看组成A有多少种⽅法,⽽我们只能⽤1,2,。
蓝桥杯部分题目(含答案)
1、未名湖边的烦恼关键词:递归,蓝桥杯,算法问题描述每年冬天,北大未名湖上都是滑冰的好地方。
北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。
现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。
(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式两个整数,表示m和n输出格式一个整数,表示队伍的排法的方案数。
样例输入3 2样例输出5数据规模和约定m,n∈[0,18]#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#include "map"using namespace std;int f(int m,int n){if(m<n) return 0;if(n==0) return 1;return f(m,n-1)+f(m-1,n);}int main(){int m,n;scanf("%d%d",&m,&n);int ans=f(m,n);printf("%d\n",ans);return 0;}2.标题:蚂蚁感冒关键词:结构体排序,蓝桥杯【题目描述】长100厘米的细长直杆子上有n只蚂蚁。
它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。
并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
【数据格式】第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
蓝桥杯试题及答案
蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 在JavaScript中,用于定义函数的关键字是________。
答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。
答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。
例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。
2. 请解释什么是栈,并给出一个栈的应用场景。
答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。
一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。
四、编程题1. 编写一个函数,实现对一个整数数组进行排序。
答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。
答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。
Python2018蓝桥杯真题练习—哪天返回
Python2018蓝桥杯真题练习—哪天返回
问题描述
小明被不明势力劫持。
后莫名其妙被扔到x星站再无问津。
小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。
他决定在x星战打工。
好心的老板答应包食宿,第1天给他1元钱。
并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。
要求提交的是一个整数,表示第几天。
解决方案
本题的理解程度不难,是对于基础知识的理解应用,在设置未知数的同时通过循环做出判断,并在循环中解出要计算的未知数,本题只是通过基础的一次循环就可以得到解题答案,不需要做过多的理解与复杂的重复返回计算。
只需要注意while循环的注意事项就可以
结语
学习并练习蓝桥杯竞赛的真题,理解题目的意义,在解题过程中,复习while 循环的使用。
本题不需要做多的理解和太复杂的代码去解释题目的答案。
继续练习蓝桥杯真题。
实习编辑:衡辉
稿件来源:深度学习与文旅应用实验室(DLETA)。
蓝桥杯历年c语言试题及答案
蓝桥杯历年c语言试题及答案蓝桥杯历年C语言试题及答案1. 题目一:数组反转要求:编写一个函数,实现对整数数组的反转。
输入:一个整数数组及其长度。
输出:反转后的数组。
答案:```cvoid reverseArray(int arr[], int n) {int temp;for (int i = 0; i < n / 2; i++) {temp = arr[i];arr[i] = arr[n - i - 1];arr[n - i - 1] = temp;}}```2. 题目二:寻找最大数要求:给定一个整数数组,找出其中的最大数。
输入:一个整数数组及其长度。
输出:数组中的最大数。
答案:```cint findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```3. 题目三:计算阶乘要求:编写一个函数,计算给定非负整数的阶乘。
输入:一个非负整数。
输出:该整数的阶乘。
答案:```clong long factorial(int n) {if (n == 0) return 1;long long fact = 1;for (int i = 1; i <= n; i++) {fact *= i;}return fact;}```4. 题目四:字符串反转要求:编写一个函数,实现对字符串的反转。
输入:一个字符串。
输出:反转后的字符串。
答案:```cvoid reverseString(char str[]) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}```5. 题目五:判断素数要求:编写一个函数,判断给定的整数是否为素数。
蓝桥杯题库的历届真题
1.历届试题矩阵翻硬币时间限制:1.0s 内存限制:256.0MB问题描述小明先把硬币摆成了一个n 行m 列的矩阵。
随后,小明对每一个硬币分别进行一次Q 操作。
对第x行第y列的硬币进行Q 操作的定义:将所有第i*x 行,第j*y 列的硬币进行翻转。
其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。
当小明对所有硬币都进行了一次Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。
小明想知道最开始有多少枚硬币是反面朝上的。
于是,他向他的好朋友小M寻求帮助。
聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。
然而小明很懒,不愿意照做。
于是小明希望你给出他更好的方法。
帮他计算出答案。
输入格式输入数据包含一行,两个正整数n m,含义见题目描述。
输出格式输出一个正整数,表示最开始有多少枚硬币是反面朝上的。
样例输入2 3样例输出1数据规模和约定对于10%的数据,n、m <= 10^3;对于20%的数据,n、m <= 10^7;对于40%的数据,n、m <= 10^15;对于10%的数据,n、m <= 10^1000(10的1000次方)。
2.历届试题兰顿蚂蚁时间限制:1.0s 内存限制:256.0MB问题描述兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。
平面上的正方形格子被填上黑色或白色。
在其中一格正方形内有一只“蚂蚁”。
蚂蚁的头部朝向为:上下左右其中一方。
蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。
规则虽然简单,蚂蚁的行为却十分复杂。
刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。
蚂蚁的路线是很难事先预测的。
你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。
历年蓝桥杯省赛B组真题试题
for(j = 0 ; j < 4 ; j ++) flag[i][j] = 1;
flag[0][0] = 0; flag[2][3] = 0; }
void Solve() {
int dir[8][2] = { 0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1}; int book = true; for(int i = 0 ; i < 3 ; i ++) {
int main() {
int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12;
quicksort(a, 0, N -1);
for(i=0; i<N; i++) printf("%d ", a[i]); printf("\n");
return 0; }
num[n]=0;
}
}
}
int main() {
memset(num,0,sizeof(num)); memset(visit,0,sizeof(visit)); dfs(1); cout<<sum; return 0; }
4 / 19
(4) 快速排序
历年蓝桥杯省赛 B 组真题试题
排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。
if(!visit[i]) {
visit[i] = true; mpt[x][y] = i; dfs(index+1); visit[i] = false; } } } else { dfs(index+1); } } int main() { init(); dfs(0); printf("%d\n",ans); return 0; }
36-2018蓝桥杯JavaB组试题及答案
36-2018蓝桥杯JavaB组试题及答案1:第⼏天2000年的1⽉1⽇,是那⼀年的第1天。
那么,2000年的5⽉4⽇,是那⼀年的第⼏天?注意:需要提交的是⼀个整数,不要填写任何多余内容。
⽤excel算,答案125.2.标题:⽅格计数如图p1.png所⽰,在⼆维平⾯上有⽆数个1x1的⼩⽅格。
我们以某个⼩⽅格的⼀个顶点为圆⼼画⼀个半径为1000的圆。
你能计算出这个圆⾥有多少个完整的⼩⽅格吗?注意:需要提交的是⼀个整数,不要填写任何多余内容。
public class Main {public static void main(String[] args) {int R=1000;int a=1000,b=0,tb=b,count=0;for(a=1000;a>=0;a--) {while(a*a+b*b<=R*R)b++;b--;count+=a*(b-tb);tb=b;}System.out.println(count*4); //答案 3137548}}3.标题:复数幂设i为虚数单位。
对于任意正整数n,(2+3i)^n 的实部和虚部都是整数。
求 (2+3i)^123456 等于多少?即(2+3i)的123456次幂,这个数字很⼤,要求精确表⽰。
答案写成 "实部±虚部i" 的形式,实部和虚部都是整数(不能⽤科学计数法表⽰),中间任何地⽅都不加空格,实部为正时前⾯不加正号。
(2+3i)^2 写成: -5+12i,(2+3i)^5 的写成: 122-597i注意:需要提交的是⼀个很庞⼤的复数,不要填写任何多余内容。
的使⽤了注意点:1.直接在控制台输出的话,因为太⼤了,不会显⽰完整数字结果,结果如图,其实,粘贴到记事本就可以看到完整的。
2.或者直接⽤FileWrite()写⼊⽂本。
import java.io.FileWriter;import java.io.IOException;import java.math.BigInteger;import java.util.Scanner;public class Main {public static Scanner cin = new Scanner(System.in);public static void main(String[] args) throws IOException {// 求 (2+3i)^123456 等于多少?//存答案BigInteger a = new BigInteger("2");BigInteger b = new BigInteger("3");//乘数BigInteger c = new BigInteger("2");BigInteger d = new BigInteger("3");//注意我是从第⼆个开始的:for(int i = 1; i < 123456; i++) {BigInteger x = a.multiply(c).subtract(b.multiply(d));BigInteger y = a.multiply(d).add(b.multiply(c));a = x;b = y;}// System.out.println(a + "+" + d + "i");//写⽂件FileWriter file = new FileWriter("ans.txt");//需要判断虚部的正负号,如果是负的就不需要"+"if(pareTo(new BigInteger("0")) < 0) {System.out.println("b < 0");file.write(a + "" + d + "i");}else if (pareTo(new BigInteger("0")) > 0){System.out.println("b > 0");file.write(a + "+" + d + "i");}else {System.out.println("b = 0");file.write(a + "");}file.close();}}4.标题:测试次数x星球的居民脾⽓不太好,但好在他们⽣⽓的时候唯⼀的异常举动是:摔⼿机。
蓝桥杯b组c语言历年题目
蓝桥杯b组c语言历年题目全文共四篇示例,供读者参考第一篇示例:蓝桥杯是中国面向大学生的计算机科学与编程竞赛,设立了不同级别的组别和不同的题目形式,其中B组是C语言编程的比赛,考察参赛选手对于C语言编程的理解和应用能力。
参加B组比赛需要具备一定的编程基础和C语言知识,适合有一定编程经验的大学生参与。
历年来,蓝桥杯B组的C语言题目围绕着各种不同的主题展开,涵盖了计算机科学与编程的各个方面,从基础的数据结构和算法到高级的计算机网络和操作系统等内容,题目设计丰富多样,旨在考察参赛选手的编程能力和创新思维。
以下是部分历年蓝桥杯B组的C语言题目:1. 编写一个程序,实现一个简单的计算器功能,支持加减乘除运算,并能够处理输入错误的情况。
2. 设计一个程序,实现一个简单的俄罗斯方块游戏,要求具备显示界面和键盘控制功能。
3. 编程实现一个简单的网络聊天程序,要求实现客户端和服务器端的通信功能,支持实时消息传输。
4. 设计一个程序,模拟实现一个简单的操作系统,包括进程管理、文件系统和内存管理等功能。
5. 编写一个程序,实现一个简单的图形界面,包括按钮、文本框和标签等控件,能够响应用户的操作。
这些题目涵盖了C语言编程中的各个方面,要求选手具备良好的编程基础和解决问题的能力,能够独立完成编程任务并提供有效的解决方案。
蓝桥杯B组的C语言题目旨在培养参赛选手的编程能力和创新思维,帮助他们提升对计算机科学和编程的理解和实践能力。
参加蓝桥杯B组比赛不仅可以锻炼参赛选手的编程技能,还可以拓宽他们的视野,了解计算机科学与技术领域的最新动态和发展趋势。
通过参加蓝桥杯的比赛,参赛选手可以结识志同道合的朋友,与他们共同探讨问题,交流经验,共同进步。
第二篇示例:蓝桥杯是中国首个面向大学生的计算机程序设计和算法竞赛,有A、B、C、D四个组别,其中B组使用C语言进行比赛。
蓝桥杯B组的比赛题目涵盖了C语言的基础知识、算法和数据结构等方面,旨在考察参赛选手的编程能力和解决问题的能力。
第1~3届蓝桥杯决赛试题及答案
2011年暑假蓝桥杯决赛题附答案1.四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。
我们可以通过计算机验证其在有限范围的正确性。
对于大数,简单的循环嵌套是不适宜的。
下面的代码给出了一种分解方案。
请仔细阅读,填写空缺的代码(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。
int f(int n, int a[], int idx){if(______________) return 1; // 填空1if(idx==4) return 0;for(int i=(int)sqrt(n); i>=1; i--){a[idx] = i;if(_______________________)return 1; // 填空2}return 0;}int main(int argc, char* argv[]){for(;;){int number;printf("输入整数(1~10亿):");scanf("%d",&number);int a[] = {0,0,0,0};int r = f(number, a, 0);printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);}return 0;}2.加密在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。
解密的方法就是再执行一次同样的操作。
加密过程中n位二进制数会循环使用。
并且其长度也可能不是8的整数倍。
下面的代码演示了如何实现该功能。
请仔细阅读,填写空缺的代码(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。
[蓝桥杯][2018年第九届真题]航班时间
[蓝桥杯][2018年第九届真题]航班时间题⽬⼩ hh 前往美国参加了蓝桥杯国际赛。
⼩ hh 的⼥朋友发现⼩ hh 上午⼗点出发,上午⼗⼆点到达美国,于是感叹到“现在飞机飞得真快,两⼩时就能到美国了”。
⼩ hh 对超⾳速飞⾏感到⼗分恐惧。
仔细观察后发现飞机的起降时间都是当地时间。
由于北京和美国东部有 1212 ⼩时时差,故飞机总共需要 1414 ⼩时的飞⾏时间。
不久后⼩ hh 的⼥朋友去中东交换。
⼩ hh 并不知道中东与北京的时差。
但是⼩ hh 得到了⼥朋友来回航班的起降时间。
⼩ hh 想知道⼥朋友的航班飞⾏时间是多少。
对于⼀个可能跨时区的航班,给定来回程的起降时间。
假设飞机来回飞⾏时间相同,求飞机的飞⾏时间。
输⼊格式⼀个输⼊包含多组数据。
输⼊第⼀⾏为⼀个正整数 TT,表⽰输⼊数据组数。
每组数据包含两⾏,第⼀⾏为去程的起降时间,第⼆⾏为回程的起降时间。
起降时间的格式如下:1. h1:m1:s1 h2:m2:s22. h1:m1:s1 h3:m3:s3 (+1)3. h1:m1:s1 h4:m4:s4 (+2)第⼀种格式表⽰该航班在当地时间h1时m1分s1秒起飞,在当地时间当⽇h2时m2分s2秒降落。
第⼆种格式表⽰该航班在当地时间h1时m1分s1秒起飞,在当地时间次⽇h2时m2分s2秒降落。
第三种格式表⽰该航班在当地时间h1时m1分s1秒起飞,在当地时间第三⽇h2时m2分s2秒降落。
输出格式对于每⼀组数据输出⼀⾏⼀个时间hh:mm:ss,表⽰飞⾏时间为hh⼩时mm分ss秒。
注意,当时间为⼀位数时,要补齐前导零,如三⼩时四分五秒应写为03:04:05。
数据范围保证输⼊时间合法(0≤h≤23,0≤m,s≤590≤h≤23,0≤m,s≤59),飞⾏时间不超过24⼩时。
输⼊样例:317:48:19 21:57:2411:05:18 15:14:2317:21:07 00:31:46 (+1)23:02:41 16:13:20 (+1)10:19:19 20:41:2422:19:04 16:41:09 (+1)输出样例:04:09:0512:10:3914:22:05需要注意的点:平常我都是⽤cin、cout输⼊输出的,遇到这种带格式的输出这种⽅法明显是不⽅便的,所以这⾥使⽤scanf和printf。
蓝桥杯基础试题及答案
蓝桥杯基础试题及答案1. 题目:给定一个整数数组,请找出数组中第二大的数。
答案:首先对数组进行排序,然后取出倒数第二个元素即可。
2. 题目:编写一个函数,实现字符串的反转。
答案:可以使用栈的数据结构,将字符串中的字符依次压入栈中,再依次弹出即可得到反转后的字符串。
3. 题目:判断一个整数是否是回文数。
答案:将整数转换为字符串,然后比较字符串与其反转后的字符串是否相等。
4. 题目:给定一个链表,删除链表的倒数第n个节点。
答案:使用双指针法,一个指针先走n步,然后两个指针一起走,直到第一个指针到达链表末尾,此时第二个指针指向的就是需要删除的节点的前一个节点。
5. 题目:实现一个函数,计算两个整数相加的和。
答案:使用位运算,模拟加法运算的过程,考虑进位的情况。
6. 题目:给定一个二维矩阵,找出矩阵中从左上角到右下角的最短路径,路径上的数字之和最小。
答案:使用动态规划,从左上角开始,每次向下或向右移动,选择路径和最小的方向。
7. 题目:实现一个函数,判断一个整数是否是素数。
答案:从2到该整数的平方根进行遍历,如果该整数能被遍历中的任何一个数整除,则不是素数。
8. 题目:给定一个字符串,找出其中不重复的最长子串的长度。
答案:使用滑动窗口的方法,维护一个窗口,窗口内的字符串都是不重复的,每次向右扩展窗口,并更新最长不重复子串的长度。
9. 题目:给定一个排序数组,找出数组中没有出现的最小正整数。
答案:从1开始遍历,如果当前数字不在数组中,则返回当前数字;如果遍历完数组还没有找到,则返回数组最后一个数字加1。
10. 题目:实现一个函数,计算一个整数的阶乘。
答案:使用递归或循环,从1乘到该整数,注意处理大数的情况。
蓝桥杯2018年C语言b组试题及答案
蓝桥杯2018年C语言b组试题及答案蓝桥杯2018年C语言B组试题及答案1. 题目:字符串反转要求:编写一个函数,实现字符串的反转。
输入为一个字符串,输出为该字符串的反转结果。
答案:```cvoid reverseString(char* str) {int length = 0;while (str[length] != '\0') {length++;}int i = 0;int j = length - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}```2. 题目:寻找最大值要求:给定一个整数数组,找出数组中的最大值,并返回其索引。
答案:```cint findMaxIndex(int arr[], int size) {int maxIndex = 0;for (int i = 1; i < size; i++) {if (arr[i] > arr[maxIndex]) {maxIndex = i;}}return maxIndex;}```3. 题目:计算阶乘要求:编写一个函数,计算并返回一个整数的阶乘。
答案:```clong long factorial(int n) {if (n == 0) {return 1;}long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```4. 题目:合并两个有序数组要求:给定两个有序整数数组 nums1 和 nums2,其中 nums1 的长度为 m,nums2 的长度为 n。
假设 nums1 有足够的空间(空间大小至少为 m + n)来保存 nums2 中的元素。
将 nums2 合并到 nums1 中,使合并后的数组仍然有序。
蓝桥杯试题及答案
蓝桥杯试题及答案蓝桥杯是面向全国高校计算机专业学生的程序设计竞赛,由工业和信息化部人才交流中心主办,旨在提高学生的编程能力、算法设计能力以及团队合作能力。
以下是一份蓝桥杯试题及答案的示例,供参考。
### 蓝桥杯程序设计竞赛试题及答案#### 题目一:求最大公约数题目描述:给定两个正整数 a 和 b,请编写一个程序计算它们的最大公约数(GCD)。
输入格式:输入包含两个整数 a 和 b,用空格分隔。
输出格式:输出 a 和 b 的最大公约数。
样例输入:```24 36```样例输出:``````答案:```c#include <stdio.h>int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;}int main() {int a, b;scanf("%d %d", &a, &b);printf("%d\n", gcd(a, b));return 0;}```#### 题目二:字符串反转题目描述:编写一个程序,实现对输入的字符串进行反转。
输入格式:输入一个字符串。
输出格式:输出反转后的字符串。
样例输入:```Hello World```样例输出:`````ldrow olleH```答案:```c#include <stdio.h>#include <string.h>int main() {char str[1000];scanf("%s", str);int len = strlen(str);for (int i = len - 1; i >= 0; i--) { printf("%c", str[i]);}return 0;}```#### 题目三:二分查找题目描述:在一个已排序的数组中,使用二分查找算法找出一个特定元素的位置。
蓝桥杯试题及答案c语言
蓝桥杯试题及答案c语言蓝桥杯试题及答案C语言1. 题目一:计算阶乘要求:编写一个程序,输入一个非负整数n,输出n的阶乘。
```c#include <stdio.h>int main() {int n, i;long long factorial = 1;printf("请输入一个非负整数:");scanf("%d", &n);for(i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘是:%lld\n", n, factorial);return 0;}```2. 题目二:寻找最大值要求:给定一个整数数组,找出数组中的最大值。
```c#include <stdio.h>int main() {int arr[5] = {10, 20, 30, 40, 50};int max = arr[0];for(int i = 1; i < 5; i++) {if(arr[i] > max) {max = arr[i];}}printf("数组中的最大值是:%d\n", max);return 0;}```3. 题目三:字符串反转要求:编写一个程序,输入一个字符串,输出其反转后的字符串。
```c#include <stdio.h>#include <string.h>int main() {char str[100], reversed[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = 0; i < len; i++) {reversed[i] = str[len - 1 - i];}reversed[len] = '\0';printf("反转后的字符串是:%s\n", reversed);return 0;```4. 题目四:素数判断要求:编写一个程序,输入一个正整数,判断其是否为素数。
2018java蓝桥杯校赛题目
2018java蓝桥杯校赛题⽬1.【问题描述】100 可以表⽰为带分数的形式:100 = 3 + 69258 / 714还可以表⽰为:100 = 82 + 3546 / 197注意特征:带分数中,数字1~9分别出现且只出现⼀次(不包含0)。
类似这样的带分数,100 有 11 种表⽰法。
题⽬要求:从标准输⼊读⼊⼀个正整数N (N<1000*1000)程序输出该数字⽤数码1~9不重复不遗漏地组成带分数表⽰的全部种数。
注意:不要求输出每个表⽰,只统计有多少表⽰法!样例输⼊:100样例输出:11样例输⼊:105样例输出:6这题使⽤排列组合出每种数字顺序,然后对每组数字截出所有可能出现的3段 a1,a2,a3 ,只要满⾜a1 + a2 / a3 == N ,就满⾜条件 package 蓝桥杯校赛2018;import java.util.Scanner;public class A {static int[] t = new int[10];static int[] a = new int[10];static int num;static int count;public static void main(String[] args) {Scanner in = new Scanner(System.in);num = in.nextInt();f(1);System.out.println(count);} //获取数组中⼀段拼接成数字static double get(int c, int d) {int result = a[c];for (int i = c + 1; i <= d; i++) {result = result * 10 + a[i];}return result;} //判断是否满⾜ a1 + a2 / a3 == Nstatic void is() {for (int i = 1; i < 8; i++) {for (int j = 1; j + i < 9; j++) {//System.out.println(1 + "," + i + " " + (i + 1) + "," + (i + j) + " " + (i + j + 1) + "," + 9);//System.out.println(get(1, i) + " " + get(i + 1, i + j) + " " + get(i + j + 1, 9));if(get(1, i) + get(i + 1, i + j) / get(i + j + 1, 9) == num) {//System.out.println(get(1, i) + " " + get(i + 1, i + j) + " " + get(i + j + 1, 9));count++;}}}} //这⾥dfs搜索出数字所有排列顺序static void f(int n) {if (n == 10) {//System.out.println(Arrays.toString(a));for (int i = 1; i < 10; i++) {if (t[i] == 0) {t[i] = 1;a[n] = i;f(n + 1);t[i] = 0;}}}}2.【问题描述】如果⽤a b c d这4个字母组成⼀个串,有4!=24种,如果把它们排个序,每个串都对应⼀个序号:abcd 0abdc 1acbd 2acdb 3adbc 4adcb 5bacd 6badc 7bcad 8bcda 9bdac 10bdca 11cabd 12cadb 13cbad 14cbda 15cdab 16cdba 17...现在有不多于10个两两不同的⼩写字母,给出它们组成的串,你能求出该串在所有排列中的序号吗?【输⼊格式】⼀⾏,⼀个串。
2018蓝桥杯试卷试题
2018 蓝桥杯 C语言 b 组国赛真题1.标题:换零钞x星球的钞票的面额只有: 100 元, 5 元, 2 元, 1 元,共 4 种。
小明去 x 星旅游,他手里只有 2 张 100 元的 x 星币,太不方便,恰好经过 x 星银行就去换零钱。
小明有点强迫症,他坚持要求 200 元换出的零钞中 2 元的张数恰好是 1 元的张数的10倍,剩下的自然都是 5 元面额的。
银行的工作人员有点犯难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5 元, 2 元, 1 元面额的必定都有,不能够是 0)注意,需要提交的是一个整数,不要填写任何节余的内容。
手算都能够。
下面是代码,答案 741.#include<iostream>ing namespace std;3.int main(){4.for(int i=1;i<40;i++){5.for(int j=1;j<200;j++){6.if(5*i+2*10*j+1*j==200)7.cout<<"5*"<<i<<"+2*"<<10*j<<"+1*"<<j<<"="<<5*i+2*10*j+1*j<<"(一共"<<i+10*j+j<<"张 )"<<endl;8.}9.}10.return 0;11.}12.13. 2. 标题:激光样式14.x 星球的浩荡节日为增加气氛,用 30 台机光器一字排开,向太空中打出光柱。
15.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能够同时打开!16.国王很想知道,在当前这种bug 存在的情况下,一共能打出多少种激光收效?17.显然,若是只有 3 台机器,一共能够成 5 种样式,即:18.全都关上( sorry,此时无声胜有声,这也算一种)19.开一台,共 3 种20.开两台,只 1 种21.30 台就不好算了,国王只好请你帮忙了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018蓝桥杯C语言b组国赛真题1.标题:换零钞x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。
银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5元,2元,1元面额的必须都有,不能是0)注意,需要提交的是一个整数,不要填写任何多余的内容。
手算都可以。
下面是代码,答案741.#include<iostream>ing namespace std;3.int main(){4.for(int i=1;i<40;i++){5.for(int j=1;j<200;j++){6.if(5*i+2*10*j+1*j==200)7.cout<<"5*"<<i<<"+2*"<<10*j<<"+1*"<<j<<"="<<5*i+2*10*j+1*j<<"(一共"<<i+10*j+j<<"张)"<<endl;8.}9.}10.return 0;11.}12.13. 2.标题:激光样式14.x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。
15.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!16.国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?17.显然,如果只有3台机器,一共可以成5种样式,即:18.全都关上(sorry,此时无声胜有声,这也算一种)19.开一台,共3种20.开两台,只1种21.30台就不好算了,国王只好请你帮忙了。
22.要求提交一个整数,表示30台激光器能形成的样式种数。
23.注意,只提交一个整数,不要填写任何多余的内容。
思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。
答案21783091.#include<iostream>2.#include<>ing namespace std;4.int ans = 0;5.int x[31];题:格雷码6.格雷码是以n位的二进制来表示数。
7.与普通的二进制表示不同的是,它要求相邻两个数字只能有1个数位不同。
8.首尾两个数字也要求只有1位之差。
9.有很多算法来生成格雷码。
以下是较常见的一种:10.从编码全0开始生成。
11.当产生第奇数个数时,只把当前数字最末位改变(0变1,1变0)12.当产生第偶数个数时,先找到最右边的一个1,把它左边的数字改变。
13.用这个规则产生的4位格雷码序列如下:14.000015.000116.001117.001018.011019.011120.010121.010022.110023.110124.111125.111026.101027.101128.100129.100030.以下是实现代码,仔细分析其中逻辑,并填写划线部分缺少的代码。
(答案:a^((a&(-a))<<1))1.#include <>2.void show(int a,int n){3.int i;4.int msk = 1;5.for(i=0; i<n-1; i++) msk = msk << 1;6.for(i=0; i<n; i++){7.printf((a & msk) "1" : "0");8.msk = msk >> 1;9.}10.printf("\n");11.}12.void f(int n){13.int i;14.int num = 1;15.for(i=0; i<n; i++) num = num<<1;16.int a = 0;17.for(i=0; i<num; i++){18.show(a,n);19.if(i%2==0){20. a = a ^ 1;21.}22.else{a = _________________________ ; 题:调手表小明买了块高端大气上档次的电子手表,他正准备调时间呢。
在M78星云,时间的计量单位和地球上不同,M78星云的一个小时有n分钟。
大家都知道,手表只有一个按钮可以把当前的数加一。
在调分钟的时候,如果当前显示的数是0,那么按一下按钮就会变成1,再按一次变成2。
如果当前的数是n-1,按一次后会变成0。
作为强迫症患者,小明一定要把手表的时间调对。
如果手表上的时间比当前时间多1,则要按n-1次加一按钮才能调回正确时间。
小明想,如果手表可以再添加一个按钮,表示把当前的数加k该多好啊……他想知道,如果有了这个+k按钮,按照最优策略按键,从任意一个分钟数调到另外任意一个分钟数最多要按多少次。
注意,按+k按钮时,如果加k后数字超过n-1,则会对n取模。
比如,n=10,k=6的时候,假设当前时间是0,连按2次+k按钮,则调为2。
「输入格式」一行两个整数n,k,意义如题。
「输出格式」一行一个整数表示:按照最优策略按键,从一个时间调到另一个时间最多要按多少次。
「样例输入」53「样例输出」2「样例解释」如果时间正确则按0次。
否则要按的次数和操作系列之间的关系如下:1:+12:+1,+13:+34:+3,+1「数据范围」对于30%的数据0<k<n<=5对于60%的数据0<k<n<=100对于100%的数据0<k<n<=100000资源约定:峰值内存消耗(含虚拟机)<256MCPU消耗<1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
注意:main函数需要返回0;只使用ANSIC/ANSIC++标准;不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中#include<xxx>不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
5.标题:搭积木小明对搭积木非常感兴趣。
他的积木都是同样大小的正立方体。
在搭积木时,小明选取m块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第0层。
随后,小明可以在上面摆放第1层,第2层,……,最多摆放至第n层。
摆放积木必须遵循三条规则:规则1:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木对齐;规则2:同一层中的积木必须连续摆放,中间不能留有空隙;规则3:小明不喜欢的位置不能放置积木。
其中,小明不喜欢的位置都被标在了图纸上。
图纸共有n行,从下至上的每一行分别对应积木的第1层至第n层。
每一行都有m个字符,字符可能是‘.’或‘X’,其中‘X’表示这个位置是小明不喜欢的。
现在,小明想要知道,共有多少种放置积木的方案。
他找到了参加蓝桥杯的你来帮他计算这个答案。
由于这个答案可能很大,你只需要回答这个答案对07(十亿零七)取模后的结果。
注意:地基上什么都不放,也算作是方案之一种。
【输入格式】输入数据的第一行有两个正整数n和m,表示图纸的大小。
随后n行,每行有m个字符,用来描述图纸。
每个字符只可能是‘.’或‘X’。
【输出格式】输出一个整数,表示答案对07取模后的结果。
【样例输入1】23..X.X.【样例输出1】4【样例说明1】成功的摆放有(其中O表示放置积木):(1)..X.X.(2)..XOX.(3)OX.(4)..X.XO【样例输入2】33..X.X....【样例输出2】16【数据规模约定】对于10%的数据,n=1,m<=30;对于40%的数据,n<=10,m<=30;对于100%的数据,n<=100,m<=100。
资源约定:峰值内存消耗(含虚拟机)<256MCPU消耗<1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
注意:main函数需要返回0;只使用ANSIC/ANSIC++标准;不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中#include<xxx>不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
6.标题:矩阵求和经过重重笔试面试的考验,小明成功进入Macrohard公司工作。
今天小明的任务是填满这么一张表:表有n行n列,行和列的编号都从1算起。
其中第i行第j个元素的值是gcd(i,j)的平方,gcd表示最大公约数,以下是这个表的前四行的前四列:11111414119114116小明突然冒出一个奇怪的想法,他想知道这张表中所有元素的和。
由于表过于庞大,他希望借助计算机的力量。
「输入格式」一行一个正整数n意义见题。
「输出格式」一行一个数,表示所有元素的和。
由于答案比较大,请输出模(10^9+7)(即:十亿零七)后的结果。
「样例输入」4「样例输出」48「数据范围」对于30%的数据,n<=1000存在10%的数据,n=10^5对于60%的数据,n<=10^6对于100%的数据,n<=10^7资源约定:峰值内存消耗(含虚拟机)<256MCPU消耗<2000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。
注意:main函数需要返回0;只使用ANSIC/ANSIC++标准;不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中#include<xxx>不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。