修改密码

【2024周赛课程】内部周赛训练精讲课程

成品课程

陈远龙老师主讲 & 答疑

未购买 · 可先试学5节课

课程目录展开/折叠

2024.12.08-Contest#36-每周六模拟比赛题目讲解

播放快捷键

播放/暂停:空格(或鼠标单击)      全屏:F(或鼠标双击)      退出全屏:Esc

快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→

快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←

本节课讲解配套PPT&板书:

比赛题目参考源代码

源代码下载:2024.12.08-Contest#36参考源代码下载

1. 快速幂
#include <bits/stdc++.h>
using namespace std;

int myPow1(int a, int b)
{
    int res = 1;
    for (int i = 0; i < b; i ++)
    {
        res *= a;
    }
    return res;
}

int myPow2(int a, int b)
{
    if (b == 1) return a;
    // if (b == 0) return 1; 
    int res = myPow2(a, b / 2);
    if (b % 2 == 1)
    {
        return a * res * res;
    }
    else
    {
        return res * res;
    }
}

int main()
{
    // a的b次方
    // cout << myPow1(10, 1e9) << endl;
    // cout << myPow2(10, 1e9) << endl;
    cout << myPow2(2, 4) << endl;

    return 0;
}
2. C1141-取模运算-1 - 不能AC
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int b, p, k;
    cin >> b >> p >> k;
    long long ans = (long long)pow(b, p) % k;
    cout << ans;
    return 0;
}
3. C1141-取模运算-2
#include <bits/stdc++.h>
using namespace std;

int b, p, k;

int myPow(int b, int p)
{
    if (p == 1) return b % k;
    // if (p == 0) return 1; // 也可以 
    int half = myPow(b, p / 2) % k;
    if (p % 2)
        return (half * half % k) * (b % k) % k;
    else
        return half * half % k;
}

int main()
{

    cin >> b >> p >> k;
    cout << myPow(b, p);

    return 0;
}
4. C1142-程序员输入问题-1
#include <bits/stdc++.h>
using namespace std;

int main()
{
    stack<char> s;
    char ch;
    while (cin.get(ch))
    {
        if (ch == '#')
        {
            if (!s.empty())
            {
                s.pop();
            }
            continue;
        }
        if (ch == '@')
        {
            while (!s.empty() && s.top() != '\n')
            {
                s.pop();
            }
            continue;
        }
        s.push(ch);
    }

    stack<char> ans;
    while (!s.empty())
    {
        ans.push(s.top());
        s.pop();
    }

    while (!ans.empty())
    {
        cout << ans.top();
        ans.pop();    
    }    

    return 0;
}
5. C1143-铺瓷砖-1
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int a = 1;
    for (int i = 2; i <= n; i ++)
    {
        if (i & 1)
            a = (a * 2 - 1) % 12345;
        else
            a = (a * 2 + 1) % 12345;
    }
    cout << a;

    return 0;
}
6. C1143-铺瓷砖-2
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int a = 1, b = 3;
    if (n == 1)
    {
        cout << a;
        return 0;
    }
    if (n == 2)
    {
        cout << b;
        return 0;
    }

    int c;
    for (int i = 3; i <= n; i ++)
    {
        c = (b + 2 * a) % 12345;
        a = b;
        b = c;
    }
    cout << c;

    return 0;
}
7. C1144-城市交通-1
#include <bits/stdc++.h>
using namespace std;

int a[105][105];
int n;

int dp[105];

int main()
{
    // memset(dp, 0x3f, sizeof(dp));
    cin >> n;
    for (int i = 1; i <= n; i ++)
    {
        for (int j = 1; j <= n; j ++)
            cin >> a[i][j];
    }

    dp[1] = 0;
    for (int i = 2; i <= n; i ++)
    {
        int mn = INT_MAX; // 代表最小值 
        for (int j = 1; j < i; j ++)
        {
            if (a[i][j])
            {
                // dp[i] = min(dp[i], dp[j] + a[i][j]);
                mn = min(mn, dp[j] + a[i][j]);
            }
        }
        dp[i] = mn;
    }
    cout << dp[n];

    return 0;
}
8. C1144-城市交通-2
#include <bits/stdc++.h>
using namespace std;

int a[105][105];
int n;

int dp[105];

int main()
{
    // memset(dp, 0x3f, sizeof(dp));
    cin >> n;
    for (int i = 1; i <= n; i ++)
    {
        for (int j = 1; j <= n; j ++)
            cin >> a[i][j];
    }

    dp[n] = 0;
    for (int i = n - 1; i >= 1; i --)
    {
        int mn = INT_MAX; // 代表最小值 
        for (int j = i + 1; j <= n; j ++)
        {
            if (a[i][j])
            {
                // dp[i] = min(dp[i], dp[j] + a[i][j]);
                mn = min(mn, dp[j] + a[i][j]);
            }
        }
        dp[i] = mn;
    }
    cout << dp[1];

    return 0;
}

本节课答疑

建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习

陈远龙老师视频讲解:如何使用DeepSeek进行答疑?

通过AI未能获得满意解答的,可以联系陈远龙老师答疑

目录