![](https://img-blog.csdnimg.cn/fcede87c672d4f02995124b6203c1c4a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
蓝桥杯
关于蓝桥杯刷题
小满@
自古程序员如美人 不许人间见白头
展开
-
历届试题-子串分值和(蓝桥十一届)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述对于一个字符串 ,我们定义 的分值 为 中出现的不同的字符个数。例如 "aba","abc", "aaa"。现在给定一个字符串 (长度为 ),请你计算对于所有 的非空子串 ,的和是多少。输入格式输入一行包含一个由小写字母组成的字符串 。输出格式输出一个整数表示答案。样例输入ababcData样例输出28样例说明子串 f值a 1ab 2aba 2abab 2aba原创 2021-04-13 18:13:18 · 1046 阅读 · 4 评论 -
历届试题-成绩统计(蓝桥十一届)
资源限制时间限制:1.0s 内存限制:256.0MB问题描述小蓝给学生们组织了一场考试,卷面总分为 分,每个学生的得分都是一个 到 的整数。如果得分至少是 分,则称为及格。如果得分至少为 分,则称为优秀。请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。输入格式输入的第一行包含一个整数 ,表示考试人数。接下来 行,每行包含一个 至 的整数,表示一个学生的得分。输出格式输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分四舍五入原创 2021-04-13 17:45:59 · 184 阅读 · 0 评论 -
算法提高 一元一次方程
资源限制时间限制:1.0s 内存限制:512.0MB 输入一元一次方法的ax+b=0的解。且数据均在double类型以内,且一定有解(保留2位小数)样例输入2 6样例输出-3.00#include<stdio.h>int main(){ double a,b,x; scanf("%lf%lf",&a,&b); x=(-b)/a; printf("%.2lf",x); return 0;}...原创 2021-04-09 23:22:23 · 232 阅读 · 0 评论 -
算法提高 质因数
资源限制时间限制:1.0s 内存限制:512.0MB 将一个正整数N(1<N<32768)分解质因数。例如,输入90,打印出90=2*3*3*5。样例输入66样例输出66=2*3*11#include<stdio.h>int main(){ int flag=1,n; int x=1; scanf("%d",&n); printf("%d=",n); while(n!=1){ x++; while(n%x==0){ if(fla原创 2021-04-09 22:56:04 · 87 阅读 · 0 评论 -
算法提高 逆序排列
问题描述 编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来。 输入格式:输入只有一行,由若干个整数组成,中间用空格隔开,最末尾的整数为0。 输出格式:输出也只有一行,即逆序排原创 2021-04-06 23:46:38 · 321 阅读 · 0 评论 -
算法提高 约数个数
输入一个正整数N (1样例输入12样例输出6样例说明 12的约数包括:1,2,3,4,6,12。共6个#include<stdio.h>int main(){ int n; scanf("%d",&n); int i,count=0; for(i=1;i<=n;i++){ if(n%i==0){ count++; } } printf("%d\n",count); return 0;}126-------------原创 2021-04-06 23:21:00 · 75 阅读 · 0 评论 -
算法提高 十进制数转八进制数
编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。 样例输入 9274 样例输出 22072样例输入 18 样例输出 22#include<stdio.h>int main(){ int n; scanf("%d",&n); printf("%o\n",n); return 0;}...原创 2021-04-06 22:54:57 · 162 阅读 · 0 评论 -
算法提高 8-1因式分解
问题描述 设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。样例 与上面的样例输入对应的输出。 例: 输入:120 输出:2*2*2*3*5 #include<stdio.h>int main() { int n, x=1,flag=1; scanf("%d",&n); while(n!=1) { x++; while(n%x==0) { if(flag) { flag=0;原创 2021-04-06 22:46:09 · 88 阅读 · 0 评论 -
蓝桥历届真题-跑步锻炼
答案:8879思路:遍历每一天,处理好天数和月数累加时超出本月和本年的月数和月数界限。代码实现:#include<stdio.h>isLeapYear(int n) { if(n%400==0||(n%4==0&&n%100!=0)) { return 1; } return 0;}int main() { int arr[]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int year=2000,month.原创 2021-04-04 23:05:28 · 315 阅读 · 3 评论 -
蓝桥历届真题-蛇形填数
解法有很多,但我觉得对于这道填空题最好的解法是找规律,竞赛不是比谁写的代码更高级更花里胡哨,而是解决问题,不管你用的是什么方法,当然越优越快最好。思路:找规律,题目求20行20列,当你找出11,22,33,44,55,66时,你会发现它是有规律的。这样做的好处就是可以验证前几次的数据是否对的上,对的上那答案就是对的。代码实现:#include<stdio.h>int main(){ int i,a=4; int sum=1; for(i=0;i<20;i++){.原创 2021-04-04 21:21:10 · 255 阅读 · 3 评论 -
蓝桥历届真题-既约分数
答案:2481215思路:遍历1-2020之间的任意点对,判断gcd是否为1,计数。使用欧几里得算法(辗转相除法)#include<stdio.h>int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b);}int main(){ int i,j; int count=0; for(i=1;i<=2020;i++){ for(j=1;j<=2020;j++){ if(gcd.原创 2021-04-04 20:01:18 · 115 阅读 · 0 评论 -
蓝桥历届真题-门牌制作
答案:624代码如下:#include<stdio.h>int main() { int i,count=0; for(i=1;i<=2020;i++){ int j=i; while(j){ if(j%10==2){ count++; } j/=10; } } printf("%d\n",count); return 0;}原创 2021-04-04 17:49:50 · 101 阅读 · 0 评论 -
算法提高 成绩排序
问题描述 小明刚经过了一次数学考试,老师由于忙碌忘记排名了,于是老师把这个光荣的任务交给了小明,小明则找到了聪明的你,希望你能帮他解决这个问题。输入格式 第一行包含一个正整数N,表示有个人参加了考试。接下来N行,每行有一个字符串和一个正整数,分别表示人名和对应的成绩,用一个空格分隔。输出格式 输出一共有N行,每行一个字符串,第i行的字符串表示成绩从高到低排在第i位的人的名字,若分数一样则按人名的字典序顺序从小到大。样例输入3aaa 47bbb 90ccc 70样例输出bbbc原创 2021-03-30 23:09:08 · 138 阅读 · 0 评论 -
算法提高 P0102
用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0。(不考虑输入不合法的情况)输入 1D5输出(注意冒号后面有一个空格) Hex: 0x1D5 Decimal: 469 Octal: 0725思路一:以转换的过程入手#include<stdio.h>int main(){ char a[3]; gets(a);//原创 2021-03-30 23:03:16 · 59 阅读 · 0 评论 -
算法提高 日期计算
问题描述 已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。输入格式 输入只有一行 YYYY MM DD输出格式 输出只有一行 W数据规模和约定 1599 <= YYYY <= 2999 1 <= MM <= 12 1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期 1 <= W <= 7,分别代表周一到周日样原创 2021-03-30 20:44:03 · 220 阅读 · 0 评论 -
算法提高 输出二进制表示
问题描述 输入[-128,127]内的整数,输出其二进制表示。提示,可使用按位与&输入格式 例:7输出格式 例:00000111样例输入一个满足题目要求的输入范例。例:7样例输出与上面的样例输入对应的输出。例:00000111数据规模和约定 输入数据中每一个数的范围。 例:0<n,m<100, 0<=矩阵中的每个数<=1000。思路:将正数与负数分开计算。正数取余2存入8位数组并倒置输出即可负数的二进制的表示为该负数的补码原创 2021-03-29 23:23:45 · 467 阅读 · 0 评论 -
算法提高 矩阵转置
【问题描述】 给定一个n×m矩阵相乘,求它的转置。其中1≤n≤20,1≤m≤20,矩阵中的每个元素都在整数类型(4字节)的表示范围内。【输入格式】 第一行两个整数n和m; 第二行起,每行m个整数,共n行,表示n×m的矩阵。数据之间都用一个空格分隔。【输出格式】 共m行,每行n个整数,数据间用一个空格分隔,表示转置后的矩阵。样例输入2 434 76 -54 7-4 5 23 9样例输出34 -476 5-54 237 9思路:行列nm,坐标ij均倒置输出原创 2021-03-29 23:13:01 · 142 阅读 · 0 评论 -
蓝桥- 算法提高 输出三个整数的最大数
问题描述 编写程序,输入3个整数,求出最大数并输出。输入格式 输入三个整数,用空格分开。输出格式 输出三个数的最大值样例输入5 3 4样例输出5代码实现:#include<stdio.h>int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d\n",(a>b?a:b)>c?(a>b?a:b):c); return 0;}...原创 2021-03-28 21:28:34 · 121 阅读 · 0 评论 -
蓝桥-算法提高 进制转换
问题描述 编写函数将十进制整数按8进制输出,然后编写main函数验证该函数。例如输入12,则输出为:12=014,输入32,则输出32=040。输入格式 输入一个整数。输出格式 输出这个整数的八进制形式。样例输入12样例输出014数据规模和约定 输入的整数n>=0.#include<stdio.h>#include<math.h>int main(){ int n,m,i,now=0; scanf("%d",&n); for(原创 2021-03-28 21:26:38 · 130 阅读 · 0 评论 -
蓝桥-算法提高 递归输出
问题描述 编写递归函数,将组成整数的所有数字逐个输出,每个数字后面加上一个减号“-”,例如对于整数123,该函数将输出1-2-3- 。编写主函数测试该递归函数。输入格式 输入一个整数n输出格式 如题目要求,把n的每个数字后面加一个减号”-“输出样例输入一个满足题目要求的输入范例。例:123样例输出与上面的样例输入对应的输出。例:1-2-3-数据规模和约定 输入n>0,必须使用递归调用来实现!代码实现:#include<stdio.h>void原创 2021-03-28 21:22:17 · 154 阅读 · 0 评论 -
蓝桥-算法提高 快速排序
问题描述 用递归来实现快速排序(quick sort)算法。快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x。首先对数组中的元素进行调整,使x放在正确的位置上。同时,所有比x小的数都位于它的左边,所有比x大的数都位于它的右边。然后对于左、右两段区域,递归地调用快速排序算法来进行排序。 输入格式:输入只有一行,包括若干个整数(不超过10个),以0结尾。 输出格式:输出只有一行,即排序以后的结果(不包括末尾的0)。输入输出样例样例输入5 2 6 1 7 3 4 0样例原创 2021-03-27 22:50:41 · 185 阅读 · 0 评论 -
蓝桥-算法提高 质数2
问题描述 给定一个正整数N,请你输出N以内(不包含N)的质数以及质数的个数。输入格式 输入一行,包含一个正整数N。输出格式 共两行。 第1行包含一个整数,表示N以内质数的个数。 第2行包含若干个素数,每两个素数之间用一个空格隔开,素数从小到大输出。样例输入10样例输出42 3 5 7数据规模和约定 N<=1000#include<stdio.h>#include<math.h>int IsPrime(int num);int m原创 2021-03-27 22:44:39 · 185 阅读 · 0 评论 -
蓝桥-算法提高 偶数还是奇数
问题描述 判断一个数是奇数还是偶数输入格式 输入1个整数n。输出格式 如果是偶数,输出“even”。 如果是奇数输出“odd”样例输入34样例输出even数据规模和约定 n<=100000000#include<stdio.h>int main(){ int n; scanf("%d",&n); if(n%2==0) printf("even"); else printf("odd"); return 0; }.原创 2021-03-27 22:40:56 · 72 阅读 · 0 评论 -
蓝桥-算法提高 栅格打印问题
问题描述 编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用“+”、“-”和“|”这三个字符来打印一个栅格。 输入格式:输入只有一行,包括两个整数,分别为栅格的高度和宽度。 输出格式:输出相应的栅格。 输入输出样例样例输入3 2样例输出+-+-+| | |+-+-+| | |+-+-+| | |+-+-+#include<stdio.h>int main(){ int g,k,i,j; scanf("%d%d",&g,&k);原创 2021-03-27 22:34:31 · 168 阅读 · 0 评论 -
蓝桥-算法提高 图形输出
编写一程序,在屏幕上输出如下内容: X | X | X---+---+--- | |---+---+--- O | O | O 注意:本题请同学们严格按照图形的格式输出,对齐,其中X和O为大写,否则系统会判为错误。#include<stdio.h>int main(){ printf(" X | X | X \n---+---+---\n | | \n---+---+---\n O | O | O "); return 0;}...原创 2021-03-27 22:30:55 · 122 阅读 · 0 评论 -
蓝桥-算法提高 菱形
题目:请编程输出一个菱形。输入为菱形中心到顶点的距离样例输入2样例输出:思路:观察规律法。当n为3时。总结输入n上半部分:行数=n+1,空格数=n-行序(从第0行开始),* 号数=2 *行数+1下班部分:行数=n,空格数=行数+1,*号数=2 *(n-行数)-1#include<stdio.h>int main() { int n; int i,j; scanf("%d",&n); //打印上面部分 for(i=0; i<n+1原创 2021-03-27 22:20:55 · 98 阅读 · 0 评论 -
算法提高 高精度减法
问题描述 高精度减法输入格式 两行,表示两个非负整数a、b,且有a > b。输出格式 一行,表示a与b的差样例输入12345678909876543219999样例输出1234567890987644322#include<stdio.h>#include<string.h>int main(){ char a[10000],b[10000]; int c[10000],sa,sb,i; scanf("%s\n%s",a,b); sa原创 2021-03-25 21:54:12 · 131 阅读 · 0 评论 -
算法提高 分解质因数
问题描述 给定一个正整数n,尝试对其分解质因数输入格式 仅一行,一个正整数,表示待分解的质因数输出格式 仅一行,从小到大依次输出其质因数,相邻的数用空格隔开样例输入100样例输出2 2 5 5数据规模和约定 n<=2147483647思路:n=1时,质因数为1.n>1时,一次判断i(2~sqrt(n))是否能除尽,能则打印i并重置i=1,反之继续往后判断。当n不能被除时,n就是最后的质因数。#include<stdio.h>#inc原创 2021-03-25 21:49:08 · 107 阅读 · 1 评论 -
算法提高 水仙花数
问题描述 求出所有的“水仙花数”。所谓的“水仙花数”,是指一个3位数,其各位数字的立方和等于该数本身。输入格式 程序使用for循环遍历所有三位数整数,不需要手动输入输出格式 遇到水仙花数输出样例输入无输入样例输出例:153370371407#include<stdio.h>#include<math.h>int main() { int i; int sum=0; for(i=100;i<999;i++){ sum=pow(i%原创 2021-03-25 19:09:28 · 119 阅读 · 0 评论 -
算法提高 2-2整数求和
资源限制时间限制:1.0s 内存限制:256.0MB 基于例子3 ,写一个程序,实现整数求和:样例输入3 4样例输出7#include<stdio.h>int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d\n",a+b); return 0;}...原创 2021-03-25 18:48:36 · 85 阅读 · 0 评论 -
算法提高 简单加法
问题描述 小于10的自然数中有四个数字能除尽3或5(3, 5, 6, 9),它们的和为23。 请计算所有小于1000的自然数中能除尽3或5的数字的合。然后使用标准输出cout,输出你的结果。输入格式 无。输出格式 一行一个整数,表示你的结果。#include<stdio.h>int main(){ int i; int cout=0; for(i=1;i<1000;i++){ if(i%3==0||i%5==0){ cout+=i; }原创 2021-03-25 18:44:31 · 102 阅读 · 0 评论 -
算法提高 数组求和
问题描述 输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少?输入格式 输入的第一行包含两个整数n, m。第二行,共n个整数。输出格式 输出1行,包含一个整数,连续m个数之和的最大值。样例输入10 39 10 1 5 9 3 2 6 7 4样例输出23解题思路:每次遍历三个累加,遍历完i++,遍历n次。当下标超过数组数据长度时,处理环问题。擂台法比较最大#include<stdio.h>int main(){ int n,m,i,j原创 2021-03-25 18:37:16 · 117 阅读 · 0 评论 -
算法提高 字符串比较
独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。样例输入: apple one 样例输出:-1样例输入: hello he样例输出:1样例输入: hello hello样例输出:0主要考察字符串strcmp函数的使用#include<stdio.h>#include<string.h>int main(){ char a[100],b[原创 2021-03-25 17:36:02 · 168 阅读 · 0 评论 -
算法提高 周期字串
问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。 我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。 例如: 字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。 右右现在想给他的朋友大原创 2021-03-25 13:46:50 · 173 阅读 · 0 评论 -
算法提高 字符串压缩
问题描述 编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩: (1) 如果该字符是空格,则保留该字符; (2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符; (3) 否则,删除该字符。 例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”。 输入格式:输入只有一行,即原始字符串。 输出格式:输出只有一行,即经过原创 2021-03-25 13:34:31 · 334 阅读 · 0 评论 -
算法提高 字符串顺序比较
问题描述 比较两个字符串s1和s2,输出:0表示s1与s2相等;1表示s1的字母序先于s2;-1表示s1的字母序后于s2输入格式 输入两行,第一行输入一个字符串1,第二行输入字符串2。输出格式 输出比较的结果样例输入abcabd样例输出1样例输入EnglishEnglish样例输出0样例输入helloha样例输出-1这道题笔者认为是考字符串函数strcmp的使用,因为笔者是使用C语言,先来了解一下strcmp函数的作用。strcmp(s,t);根据原创 2021-03-22 20:58:27 · 276 阅读 · 0 评论 -
蓝桥杯-算法训练 多阶乘计算
问题描述 我们知道,阶乘n!表示n*(n-1)(n-2)…21, 类似的,可以定义多阶乘计算,例如:5!!=5 * 3 * 1,依次可以有n!..!(k个‘!’,可以简单表示为n(k)!)=n*(n-k)(n-2k)…(直到最后一个数<=0)。 现给定一组数据n、k、m,当m=1时,计算并输出n(1)!+n(2)!+…+n(k)!的值,m=2时计算并输出n(1)!+n(2)!+…+n(k)!的各个位上的数字之和。 输入格式 两行,第一行为n和k,第二行为m。输出格式 一行,为n原创 2021-03-22 18:28:19 · 186 阅读 · 0 评论 -
算法提高 编程求解根号3
问题描述 进行数学运算是计算机的主要能力,利用计算机的重复计算能力可以帮助人们求解一些十分复杂的数学运算,比如高次方程、求根,求平方等。根号运算是数学的基本运算,对于无理数的求解,我们可以使用两边取值,不断逼近的方法进行求解。现要求你编程实现根号3的求解。输入格式 无输入输出格式 输出根号3的求解结果样例输入无样例输出无数据规模和约定 初始边界值分别为:low=1.0,high=2.0,更新边界值使用平均数,并要求循环20次后输出结果。本题的就是求根号3,但是我们不用直接原创 2021-03-21 22:46:36 · 1167 阅读 · 0 评论 -
算法提高 递归
问题描述 当x>1时,Hermite多项式的定义见第二版教材125页。用户输入x和n,试编写“递归”函数,输出对应的Hermite多项式的值。其中x为float型,n为int型。输入格式 x n输出格式 对应多项式的值样例输入一个满足题目要求的输入范例。例:1.8 7样例输出与上面的样例输入对应的输出。例:-987.857数据规模和约定 x>1 n为自然数什么是Hermite多项式当x>1时,Hermite多项式定义为:Hn(x)=原创 2021-03-21 22:28:35 · 140 阅读 · 0 评论 -
算法提高 计数问题
问题描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。输入格式 输入文件名为 count.in。 输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。输出格式 输出文件名为 count.out。 输出共 1 行,包含一个整数,表示 x 出现的次数。输入输出样例count.incount.out11 14解题原创 2021-03-21 00:18:04 · 143 阅读 · 0 评论