蓝桥杯第十二届校赛第一期模拟赛 c语言

1 如果整数 a 是整数 b 的整数倍,则称 b 是 a 的约数。
  请问,有多少个正整数是 2020 的约数。 12
#include <stdio.h>
#include <math.h>
int main()
{ int a,b,c=0;
for(a=1;a<sqrt(2020);a++)
for(b=2020;b>sqrt(2020);b–)
if(a*b==2020)
{ c++;
printf("%d %d\n",a,b);
}
printf("%d\n",c);
return 0;
}

2 如果一个 mp3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 mp3 文件?25600

3 一个包含 2020 个结点的无向图,如果图中没有自环和重边,最多包含多少条边?  一个包含 2020 个结点的无向图,如果图中没有自环和重边,最多包含多少条边?
#include <stdio.h>
int main()
{ int jd,bian=0,anum=1;
for(jd=2; jd<=2020; jd++)
{ bian+=anum; anum++;
printf(“jd=%d,bian=%d\n”,jd,bian); }
return 0;
}

4 整数 1 到 6 连在一起,成为 123456,长度为 6。
  整数 1 到 12 连在一起,成为 123456789101112,长度为 15。
  请问整数 1 到 2020 连在一起,长度为多少?6973
#include <stdio.h>
int main()
{ int a,b,c=0;
for(a=1;a<2021;a++)
{ b=a; c++;
while(b/=10) c++; }
printf("%d\n",c);
return 0;
}

5 在一个序列 a = (a[1], a[2], …, a[n]) 中,如果 (i, j) 满足 i < j 且 a[i] > a[j],则称为一个逆序对。217
 例如:(3, 2, 2, 1) 中包含 6 个逆序对。
  请问,(87, 39, 35, 1, 99, 10, 54, 1, 46, 24, 74, 62, 49, 13, 2, 80, 24, 58, 8, 14, 83, 23, 97, 85, 3, 2, 86, 10, 71, 15) 中包含多少个逆序对?
#include <stdio.h>
int main()
{ int h[]={87,39,35,1,99,10,54,1,46,24,74,62,49,13,2,80,24,58,8,14,83,23,97,85,3,2,86,10,71,15},a,b,c=0;
for(a=0;a<sizeof(h)/4;a++)
for(b=a+1;b<sizeof(h)/4;b++)
if(a<b&&h[a]>h[b]) c++;
printf("%d\n",c);
return 0;
}

6问题描述
  给定一个三角形的底边长度 l 和高度 h,求三角形的面积。
输入格式
  输入的第一行包含一个整数 l,表示三角形的底边长度。
  第二行包含一个整数 h,表示三角形的高。
输出格式
  输出一个数,表示三角形的面积。如果面积为整数,请直接输出这个整数,不带小数点。如果面积不是整数,请四舍五入保留正好一位小数。
样例输入
5
6
样例输出
15
样例输入
5
3
样例输出
7.5
数据规模和约定
对于所有评测用例,1 <= l, h <= 100。( 是否表示
#include <stdio.h>
int main()
{ int a,b; float c=0;
scanf("%d%d",&a,&b);
if(a<1||b>100||b<1) return 0;
c=ab/2.0;
if((int)(c
10)%10) printf("%.1f\n",c);
else printf("%d\n",(int)c);
return 0;
}

7问题描述
  小蓝正在上小学,老师要求同学们在暑假每天记日记。可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。
  没想到,日记很快就被老师发现了问题,原来小蓝记完8月31日的日记,竟又记了8月32日和8月33日的日记。这显然是有问题的,因为根本没有8月32日和8月33日。
  给定一个月份和一个日期,请问2021年有没有这一天。
输入格式
  输入的第一行包含一个整数 m,表示月份。
  第二行包含一个整数 d,表示日期。
输出格式
  如果2021年有 m 月 d 日,输入 yes,否则输出 no。
样例输入
8
32
样例输出
no
样例输入
2
28
样例输出
yes
数据规模和约定
对于所有评测用例,1 <= m <= 20,1 <= d <= 40
#include <stdio.h>
int main()
{ int h[]={0,31,28,31,30,31,30,31,31,30,31,30,31},m,d,c=0;
scanf("%d%d",&m,&d);
if(m<1||m>20||d<1||d>40) return 0;
if(d==h[m]) c++;
if( c ) printf(“yes\n”);
else printf(“no\n”);
return 0;
}

8问题描述
  给定一个单词,请问在单词中删除 t 个字母后,能得到的字典序最小的单词是什么?
输入格式
  输入的第一行包含一个单词,由大写英文字母组成。
  第二行包含一个正整数 t。
输出格式
  输出一个单词,表示答案
样例输入
LANQIAO
3
样例输出
AIAO
数据规模和约定
对于所有评测用例,单词长度不超过 100,t 小于单词长度
#include <stdio.h>
char j[100];

lj(int b)
{ for(;j[b];b++)
j[b]=j[b+1];
}

int main()
{ int a,b;
gets(j); scanf("%d",&a);
while(a)
{ for(b=0;;b++)
if(j[b]>j[b+1])
{ lj(b); a–; break; }
}
printf("%s\n",j);
return 0;
}

9问题描述
  给定一个序列 a_1, a_2, …, a_n。其中 a_1 < a_2 < … < a_n。
  相邻两个数之间的差(后一个数减前一个数)称为它们的间隙。
  请问序列中最大的间隙值是多少?
输入格式
  输入的第一行包含一个整数 n,表示序列的长度。
  第二行包含 n 个正整数,为给定的序列。
输出格式
  输出一个整数,表示序列中最大的间隙值。
样例输入
5
1 3 8 9 12
样例输出
5
样例说明
  a_3 - a_2 = 5。
数据规模和约定
对于所有评测用例,1 <= n <= 1000,1 <= a_i <= 100000。
#include <stdio.h>
int main()
{ int arr[1001],n,i,max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
for(i=1;i<n;i++)
if(arr[i]-arr[i-1]>max) max=arr[i]-arr[i-1];
printf("%d\n",max);
return 0;
}

10问题描述
  小蓝有黄绿蓝三种颜色的小球,分别为 R, G, B 个。同样颜色的小球没有区别。
  小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为 t_1,将接下来的连续小球个数记为 t_2,以此类推直到最右边的小球。
  请问,总共有多少总摆放小球的方案,使得 t_1, t_2, … 为严格单调递增序列,即 t_1 < t_2 < t_3 < …
输入格式
  输入一行包含三个整数 R, G, B。
输出格式
  输出一个整数,表示答案。
样例输入
3 6 0
样例输出
3
样例说明
  用 r 表示红球,g 表示绿球,可能的方案包括:
  rrrgggggg
  grrrggggg
  ggrrrgggg
样例输入
2 4 6
样例输出
3
样例说明
  用 r 表示红球,g 表示绿球,b 表示蓝球,可能的方案包括:
  rrggggbbbbbb
  grrgggbbbbbb
  brrggggbbbbb
数据规模和约定
对于30%的评测用例,1 <= R, G, B <= 10;
  对于60%的评测用例,1 <= R, G, B <= 30;
  对于所有评测用例,1 <= R, G, B <= 50。
#include <stdio.h>
char a[151]; int lxa[100],ans;

int zhaolx()
{ int i=0,j=0,cnt=1;
for(;a[i];i++)
{ if(a[i]==a[i+1]) cnt++;
else { lxa[j]=cnt; j++; cnt=1; }
}
return j;
}

int isZenxu(int len)
{ int i=1;
for(;i<len;i++)
if(lxa[i]<=lxa[i-1])
return 0;
return 1;
}

dfs(int step,int rn,int gn,int bn)
{ int lx_len,j=0;
if(!rn&&!gn&&!bn)
{ a[step]=0;
lx_len=zhaolx();
if(isZenxu(lx_len))
{ ans++;/*printf("%s\n",a);
while(j<lx_len) printf("%d “,lxa[j++]);
printf(”\n"); */}
return; }
if(rn)
{ a[step]=‘R’;
dfs(step+1,rn-1,gn,bn); }
if(gn)
{ a[step]=‘G’;
dfs(step+1,rn,gn-1,bn); }
if(bn)
{ a[step]=‘B’;
dfs(step+1,rn,gn,bn-1); }
}

int main()
{ int rn,gn,bn;
scanf("%d%d%d",&rn,&gn,&bn);
ans=0; dfs(0,rn,gn,bn);
printf("%d\n",ans);
return 0;
}

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值