2024级HAUT新生周赛(一)题解

A:我爱编程,编程使我快乐。

签到,直接输出就行

#include <stdio.h>
 
int main()
{
    printf("我爱编程,编程使我快乐。");
}


B: 我要看奥运!!!

注意时间跨天以及scanf和printf的使用

#include <bits/stdc++.h>
using namespace std;
signed main()
{
	int hh,mm;
    scanf("%d:%d",&hh,&mm);
    hh = hh + 18;
    hh %= 24;
    printf("%02d:%02d",hh,mm);
}

C: 二进制翻转

根据题意只需要计算数组中连续的0的段数即是答案,注意到每个连续的0的段前面必定有一个1(如果起始为0单独计算),所以记录前1后0的位置的数量即是连续的0的段的数量。

#include <stdio.h>
int n;
int a[200005];
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    int ans = 0;
    if (a[0] == 0) ans++;
    for (int i = 1; i < n; i++) {
        if (a[i] == 0 && a[i - 1] == 1) ans++;
    }
    printf("%d\n", ans);
    return 0;
}
#include <bits/stdc++.h>

using namespace std;
int n;
int a[200005];
int main() {
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    int ans = 0;
    if (a[0] == 0) ans++;
    for (int i = 1; i < n; i++) {
        if (a[i] == 0 && a[i - 1] == 1) ans++;
    }
    cout << ans << endl;
    return 0;
}

D: 小明的数字

先用char数组读入字符串s,再遍历判断s中的每一个字符,从第一个字符开始,当第i个字符比m小时,将m插入到第i个字符前面,就可以保证最后得到的值是最大值。

#include <stdio.h>

char s[105];
int main()
{
    int n;
    char m;
    scanf("%d", &n);
    scanf("%s %c", s, &m);
    int f = 0;
    for (int i = 0; i < n; i++)
    {
        if (m > s[i] && f == 0)
        {
            printf("%c", m);
            f = 1;
        }
        printf("%c", s[i]);
    }
    if (f == 0)
        printf("%c", m);
    return 0;
}

E:小明的打怪游戏

由于先攻击血量高的怪物,所以在读取时可以先对血量ai大于k的值对k取模。取模后这个题就变成了一个排序问题,将血量高的排在前面,因为优先攻击血量高的怪物,血量相同时,按找下标排序,将下表较小的放在前面。就可以得到怪物死亡顺序了。

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;

struct xp
{
    int i, k;
} a[N];

bool cmp(xp a, xp b)
{
    if (a.k != b.k)
    {
        return a.k > b.k;
    }
    return a.i < b.i;
}

int main()
{
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
    {
        a[i].i = i;
        cin >> a[i].k;
        if (a[i].k % k == 0)
            a[i].k = k;
        else
            a[i].k %= k;
    }
    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; i++)
    {
        cout << a[i].i << ' ';
    }
    return 0;
}

F: 寝室的宝箱(简单版)

简单的加减计算,对于输入的数字和字符调用相关的式子即可

#include<stdio.h>
int main()
{
    int x,y;
    char ch;
    scanf("%d %c %d",&x,&ch,&y);
    printf("%d",(ch=='+'?x+y:x-y));
    return 0;
}

G: 寝室的宝箱(困难版)

如果选择整形进行计算需要考虑使用longlong,对于除法需要特判一下,另外使用浮点数进行计算由于没有卡精度所以也是可以过的。

#include<stdio.h>

int main()
{
    long long x,y;
    char ch;
    scanf("%lld %c %lld",&x,&ch,&y);
    if(ch=='/') 
    {
        if(x%y)printf("%.2lf",(double)x/y);
        else printf("%lld",x/y);
    }
    else printf("%lld",ch=='+'?x+y:(ch=='-'?x-y:x*y));
    
    return 0;
}

H:小明的午餐难题

找到a,b,c,d中的最小值,并将其输出。

#include <stdio.h>

int main()
{
    int a, b, c, d;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    int minnum = a;
    if (minnum > a)
        minnum = a;
    if (minnum > b)
        minnum = b;
    if (minnum > c)
        minnum = c;
    if (minnum > d)
        minnum = d;
    printf("%d", minnum);
    return 0;
}

I:历经千辛万苦,只为得到你

签到题,直接输出即可。

#include<stdio.h>
int main()
{
    printf("AC!!!\n");
    return 0;
}

J: 元素中和之力

观察发现草或风只有一种中和反应方法,所以从草或风开始依次计算即可 反应时取反应元素中较小的元素值



#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve()
{
    ll x[8] = {0};
    int t;
    cin >> t;
    while (t--)
    {
        for (int i = 1; i <= 7; ++i)
        {
            cin >> x[i];
        }
        ll ans = 0;
        swap(x[4], x[7]); // 交换
        for (int i = 7; i >= 1; --i)
        {
            ll mi = min(x[i], x[i - 1]);
            if (mi > 0)
            {
                ans += mi;
                x[i - 1] -= mi;
            }
        }
        cout << ans  << "\n";
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test = 1;
    // cin >> test;
    while (test--)
    {
        solve();
    }
    return 0;
}




全部评论

相关推荐

11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务