持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
第一题:
看清楚题意要输出三行I love acm 注意要输出引号
代码:
#include <stdio.h>
int main()
{
printf("\"I love acm !\"\n");
printf("\"I love acm !\"\n");
printf("\"I love acm !\"\n");
}
第二题: 题解:没有什么好说的签到题顺序走一遍碰到3,4变0输出
代码:
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i ++)
{
int x;
scanf("%d",&x);
if(x == 3 || x == 4)
printf("0 ");
else
printf("%d ",x);
}
第三题: 题意:给一个数字把里面的所有6提前剩下的顺序输出 由题意可以看出此题排序完都是YES因此无需进行计算, 同时看数据范围大小 可以知道应用字符串输入
题解:先直接输出YES,再开两个循环,第一个判断有6就输出,第二个判断没有6就输出
代码:
#include <string.h>
char a[100];
int main()
{
scanf("%s",a);
int len = strlen(a);
printf("YES\n");
for(int i = 0;i < len;i ++)
{
if(a[i] == '6')
printf("%c",a[i]);
}
for(int i = 0;i < len; i ++)
{
if(a[i] != '6')
printf("%c",a[i]);
}
}
第四题:emmm没有什么好说的吧,签到题从右往左遍历一遍就是了
代码:
char s1[] = "gnahcnaN";
char s2[] = "nahsgnaggnij";
int len1 = strlen(s1);
int len2 = strlen(s2);
int cnt1 = 0,cnt2 = 0;
for(int i = n - 1;i >= 0;i --)
{
if(a[i] == s1[len1 - 1])
{
int x = len1 - 1;
int y = i;
while(a[y] == s1[x])
{
x --;
y --;
if(x < 0)
break;
}
if(x < 0)
{
cnt1++;
y++;
i = y;
}
}
if(a[i] == s2[len2 - 1])
{
int x = len2 - 1;
int y = i;
while(a[y] == s2[x])
{
x --;
y --;
if(x < 0)
break;
}
if(x < 0)
{
cnt2++;
y++;
i = y;
}
}
}
if(cnt1>=cnt2)
printf("nanchang\n");
else
printf("jinggangshan\n");
第五题:
题意:
告诉你一共有m个灯还有n次操作,接下来n次操作每次可以关几盏灯,是什么灯
题解:因为小明可以随便按按钮,所以只要按钮上连接过的灯都可以被点亮。所以只要有灯没有被按钮连接过就输出NO,否则输出YES。
用数组表示1~m的灯,0为熄灭,1为被点亮
循环判断是否存在未被点亮的灯
代码:
int a[110] = {0}; //用数组表示1~m的灯,0为熄灭,1为被点亮
int n,m;
scanf("%d%d", &n, &m);
while (n -- )
{
int c, b;
scanf("%d", &c);
for (int j = 0; j < c; j ++ )
{
scanf("%d", &b);
a[b] = 1; // 被连接过即可以被点亮
}
}
int flag = 0;
for(int i = 1; i <= m; i ++) // 循环判断是否存在未被点亮的灯
{
if(a[i] == 0) // 如果存在
{
flag = 1;
break;
}
}
if(flag == 1) puts("NO");
else puts("YES");
第六题:
题解:小明找朋友要想走的步数最小,那肯定每步都走最大,也就是每步尽量走5个单位,最后不足5个单位补1步就行。
代码:
int n;
scanf("%d", &n);
if(n % 5 == 0) printf("%d\n", n/5);
else printf("%d\n", n/5 + 1);
第七题:
题解: 因为路径比较少,把所有的情况列出来比较就行。
代码:
int d1,d2,d3;
scanf("%d%d%d", &d1, &d2, &d3);
int a,b,c,d,num;
a = d1 + d2 + d3;
b = (d1 + d3) * 2;
c = (d2 + d3) * 2;
d = (d1 + d2) * 2;
if(a <= b && a <= c && a <= d) num = a;
if(b <= a && b <= c && b <= d) num = b;
if(c <= a && c <= b && c <= d) num = c;
if(d <= a && d <= b && d <= c) num = d;
printf("%d\n", num);
第八题:
题解:本题只要统计字符’1’,’2’,’3’出现的次数,然后再依次输出就行。(注意如何补’+’)
代码;
scanf("%s", ch);
for (int i = 0; i < 110; i ++ )
{
if(ch[i] == '1') a ++;
else if(ch[i] == '2') b ++;
else if(ch[i] == '3') c ++;
}
int num = a + b + c;
while(a --)
{
printf("1");
d ++;
if(d < num) printf("+");
}
while(b --)
{
printf("2");
d ++;
if(d < num) printf("+");
}
while(c --)
{
printf("3");
d ++;
if(d < num) printf("+");
}
第九题:
其实和第11题一样就吧重复了,就是一个等差数列求和公式
代码就不贴了,这个应该都会
第十题:
题解:因为掷骰子得到的结果只有6种可能性,依次枚举统计结果即可。
代码:
int a, b, x = 0, y = 0, z = 0;
scanf("%d%d", &a,&b);
for(int i = 1; i <= 6; i ++)
{
int aa = abs(i-a), bb = abs(i-b);
if(aa > bb) z ++;
else if(aa == bb) y ++;
else x ++;
}
printf("%d %d %d\n",x,y,z);
第11题和第9题一样就不说了
总体来说题目偏简单,没有区分度 签到题:1,2,9 简单题:3,4,6,10,7 中等题:5,8,11