题解
难度分布
D
题目大意
给你两个数,让你看看哪个更大
题目思路
只需要先比较大小然后用分支语句(if, else) 输出即可。
题目代码
#include<stdio.h>
int main(){
int a, b;//题目范围只有1~1000的整数, 所以我们只需要int
scanf("%d%d", &a, &b);
//分支语句
if(a > b){
printf("Bat\n");
}else{
printf("Glove\n");
}
return 0;
}
C
题目大意
给你一个1 ~ 26的数 k, 然后让你输出26个字母表中的前k个字母。
题目思路
思路1:直接用分支语句,printf k 个语句
思路2:用循环语句来printf
题目代码
思路1:
#include<stdio.h>
int main(){
int k;
scanf("%d", &k);
if(k == 1) printf("A\n");
if(k == 2) printf("AB\n");
if(k == 3) printf("ABC\n");
if(k == 4) printf("ABCD\n");
if(k == 5) printf("ABCDE\n");
if(k == 6) printf("ABCDEF\n");
if(k == 7) printf("ABCDEFG\n");
if(k == 8) printf("ABCDEFGH\n");
if(k == 9) printf("ABCDEFGHI\n");
if(k == 10) printf("ABCDEFGHIJ\n");
if(k == 11) printf("ABCDEFGHIJK\n");
if(k == 12) printf("ABCDEFGHIJKL\n");
if(k == 13) printf("ABCDEFGHIJKLM\n");
if(k == 14) printf("ABCDEFGHIJKLMN\n");
if(k == 15) printf("ABCDEFGHIJKLMNO\n");
if(k == 16) printf("ABCDEFGHIJKLMNOP\n");
if(k == 17) printf("ABCDEFGHIJKLMNOPQ\n");
if(k == 18) printf("ABCDEFGHIJKLMNOPQR\n");
if(k == 19) printf("ABCDEFGHIJKLMNOPQRS\n");
if(k == 20) printf("ABCDEFGHIJKLMNOPQRST\n");
if(k == 21) printf("ABCDEFGHIJKLMNOPQRSTU\n");
if(k == 22) printf("ABCDEFGHIJKLMNOPQRSTUV\n");
if(k == 23) printf("ABCDEFGHIJKLMNOPQRSTUVW\n");
if(k == 24) printf("ABCDEFGHIJKLMNOPQRSTUVWX\n");
if(k == 25) printf("ABCDEFGHIJKLMNOPQRSTUVWXY\n");
if(k == 26) printf("ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");
//用这种写法的同学获得艰苦奋斗奖,哈哈哈
return 0;
}
思路2:
#include<stdio.h>
int main(){
int k;
scanf("%d", &k);
for(int i = 0;i < k;i ++){//记住'A' + 0 == 'A', 所以前k个要到'A' + k - 1
printf("%c", 'A' + i);
}
printf("\n");
return 0;
}
B
题目大意
给你一个坐标x, y, 然后再给你四个数,然后问你(x, y)对应的内个数是哪个
题目思路
直接用if else语句(本题也可以二维数组, 鉴于大部分同学还没学,就不再赘述)
题目代码
#include<stdio.h>
int main(){
int x, y;
scanf("%d%d", &x, &y);
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
if(x == 1 && y == 1){
printf("%d\n", a);
}
else if(x == 1 && y == 2){
printf("%d\n", b);
}
else if(x == 2 && y == 1){
printf("%d\n", c);
}
else if(x == 2 && y == 2){
printf("%d\n", d);
}
return 0;
}
A
题目大意
给你一个数,然后有四个范围,然后看我加多少可以到下一个范围
题目思路
还是if else语句哈哈哈
题目代码
#include<stdio.h>
int main(){
int R;
scanf("%d", &R);
//NOTE:一定要注意看数据范围,R >= 1 && R <= 299
if(R <= 99){
printf("%d\n", 100 - R);
}
else if(R <= 199){
printf("%d\n", 200 - R);
}
else if(R <= 299){
printf("%d\n", 300 - R);
}
return 0;
}
E
题目大意
给你一个t 和 p, 然后给你n个人的头发长度,每天增加1, 看第几天有至少t个人的头发的长度增加到p
题目思路
这是一道数组加排序的题,先将人的信息从大到小排序,这样只需要看第t个(下标为 t - 1)人什么时候达到p, 就是最少的时间。(小于等于0的话输出0)
NOTE: 本题会用到冒泡排序,学完数组的同学可以学一下经典排序算法冒泡排序
题目代码
#include<stdio.h>
#define N 110
int L[N];//数据范围n最大100,我们为了保险开到110
int main(){
int n, t, p;
scanf("%d%d%d", &n, &t, &p);
for(int i = 0;i < n;i ++){
scanf("%d", &L[i]);
}
//冒泡排序
for(int i = 0;i < n - 1;i ++){
for(int j = 0;j < n - 1 - i;j ++){
if(L[j] < L[j + 1]){
int t = L[j];//两位数交换
L[j] = L[j + 1];
L[j + 1] = t;
}
}
}
printf("%d", (t - L[p - 1] <= 0 ? 0 : t - L[p - 1]));
//三目运算符,不懂的同学一定要去学一下
return 0;
}
G
题目大意
给你一个n和一个洗手液m, 然后n个每次输入一个数为怪物的手,用洗衣液洗怪物的手,看依次洗能给几个完整的怪物洗手
题目思路
令cnt = 0为能完整洗完的怪物的数目
直接用循环语句,每次洗完,m减去x(怪物的手),只要m >= 0就让cnt ++.
题目代码
#include<stdio.h>
int main(){
int n, m;
scanf("%d%d", &n, &m);
int cnt = 0;
for(int i = 0;i < n;i ++){
int x;
scanf("%d", &x);
m -= x;
if(m >= 0) cnt ++;
}
printf("%d", cnt);
return 0;
}
F
题目大意
就是从A出发,向L和R中间,以A + kM的距离种树,问可以种几棵树
题目思路
算k的计算公式如下图所示:
我们也可以看出L,R与A的相对位置会很影响最后的结果,所以我们分类讨论即可
第一,
第二,
第三,
NOTE:本题最需要注意的有两点。
第一,注意L, R这一点的位置上也是有可能有树的,所以注意加上.
第二, 可能有很多同学会用abs来弄绝对值,那么注意c语言的abs仅仅对于整数类型,针对long long类型的话要用llabs
(这个是网站cplusplus.com)
题目代码
#include<stdio.h>
typedef long long ll;
//看数据范围1e18,会爆int,所以要开long long
//typedef 就是说接下来用long long的东西都可以用ll来替代
int main(){
ll A, M, L, R;
scanf("%lld%lld%lld%lld", &A, &M, &L, &R);
//L,R相对于A的位置会影响结果,所以进行分类讨论
ll ans = 0;
if(L >= A){
ans += ((R - A) / M);//A到R的树
ans -= ((L - A) / M);//A到L的树
if((L - A) % M == 0){//L位置的树是需要的
ans ++;
}
printf("%lld\n", ans);
return 0;
}
if(R <= A){
ans += ((A - L) / M);//A到L的树
ans -= ((A - R) / M);//A到R的树
if((A - R) % M == 0){//R位置的树是需要的
ans ++;
}
printf("%lld\n", ans);
return 0;
}
if(L <= A && A <= R){
ans += ((A - L) / M);//A到L的树
ans += ((R - A) / M);//A到R的树
ans ++; // 自己原本位置的树
printf("%lld\n", ans);
return 0;
}
return 0;
}
献给将要上大学的学弟学妹:
" 做你想做的事,成为你想成为的人。"
------图图