拼多多 提前批 7月25日 AC答案

第一题


#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;

int main()
{
    int N;
    cin >> N;
    vector<pii> v(N);
    for (int i = 0; i < N; ++i)
    {
        cin >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());
    int pre = -1;
    for (auto &p : v)
    {
        if (p.second <= pre)
        {
            cout << "true\n";
            return 0;
        }
        pre = max(pre, p.second);
    }
    cout << "false\n";
}

第二题

#include <bits/stdc++.h>
using namespace std;
int f(int p, vector<int> &cards)
{
    int i = 0, ret = 0;
    while (i != cards.size() && cards[i] != p)
        ++i;
    if (i != cards.size())
    {
        ret = cards.size() - i + 1;
        cards.resize(i);
    }
    else
        cards.push_back(p);
    return ret;
}
int main()
{
    int N, A = 0, B = 0, i = 0, j = 0;
    cin >> N;
    vector<int> a(N), b(N), cards;
    for (int i = 0; i < N; ++i)
        cin >> a[i];
    for (int i = 0; i < N; ++i)
        cin >> b[i];
    while (i < N || j < N)
    {
        while (i < N)
        {
            int t = f(a[i++], cards);
            A += t;
            if (t == 0)
                break;
        }
        while (j < N)
        {
            int t = f(b[j++], cards);
            B += t;
            if (t == 0)
                break;
        }
    }
    for (auto i : cards)
        i % 2 ? A++ : B++;
    cout << A << " " << B << "\n";
}

第三题

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
    ll T, A, B, C, Q;
    cin >> T;
    while (T--)
    {
        cin >> A >> B >> C >> Q;
        if (C == 1)
        {
            if ((Q - A) % B == 0)
                cout << "1\n";
            else
                cout << "0\n";
        }
        else
        {
            ll flag = 0, t = A;
            while (t <= Q)
            {
                if (t % B == Q % B)
                {
                    flag = 1;
                    break;
                }
                t *= C;
            }
            if (flag)
                cout << "1\n";
            else
                cout << "0\n";
        }
    }
}

第四题

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

string mul(string &a, string &b)
{
    int n = a.size(), m = b.size(), c = 0;
    vector<int> v(n + m, 0);
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j < m; ++j)
        {
            v[i + j] += (a[i] - '0') * (b[j] - '0');
        }
    }
    string res;
    for (int i = 0; i < n + m; ++i)
    {
        c += v[i];
        res += char(c % 10 + '0');
        c /= 10;
    }
    reverse(res.begin(), res.end());
    while (res.size() > 1 && res[0] == '0')
        res.erase(res.begin());
    return res;
}

int main()
{
    string s;
    for (int i = 0, t; i < 10; ++i)
    {
        cin >> t;
        if (t != 0)
            s += string(t, char(i + '0'));
    }
    sort(s.rbegin(), s.rend());
    string a, b;

    bool flag = true;
    for (int i = 0, j = 1; i < s.size(); i += 2, j += 2)
    {
        if (j == s.size())
        {
            if (flag)
                a += s[i];
            else
                b += s[i];
            break;
        }
        if (flag && s[i] == s[j])
        {
            a += s[i];
            b += s[j];
        }
        else if (flag)
        {
            a += s[i];
            b += s[j];
            flag = false;
        }
        else
        {
            a += s[j];
            b += s[i];
        }
    }
    cout << mul(a, b) << "\n";
}




#拼多多笔试##学习路径#
全部评论
看来第三题t % B == Q % B是关键,我写成减法一直TLE
4 回复 分享
发布于 2021-07-25 21:05
第一题样例: 2 1 3 1 4 输出false,我记得这个应该是true?
3 回复 分享
发布于 2021-07-25 21:11
第一题排序应该相同时 结尾大的在前面 我没考虑好 但是也没有这个样例 侥幸过了
2 回复 分享
发布于 2021-07-25 22:51
第一题漏了判断,起点相同的一定是true,加上 for (auto &q : v) {         if (va == q.first) {             cout<<"true"<<endl;             return 0;         }         va = q.first;     }
2 回复 分享
发布于 2021-07-26 09:09
大佬牛批..
1 回复 分享
发布于 2021-07-25 21:03
T4是什么思路?
1 回复 分享
发布于 2021-07-25 21:05
太强了。。。
1 回复 分享
发布于 2021-07-25 21:05
牛皮 跪了
1 回复 分享
发布于 2021-07-25 21:07
牛叉
1 回复 分享
发布于 2021-07-25 21:10
大佬牛
1 回复 分享
发布于 2021-07-25 21:11
第四题一样的思路,但是只过了20%,唯一的区别是我是从高位往低位遍历的,就很难过😂
1 回复 分享
发布于 2021-07-25 21:12
学习学习
1 回复 分享
发布于 2021-07-25 21:16
学习了🤯
1 回复 分享
发布于 2021-07-25 21:20
有没有大佬能告知一下,第二题,a和b为什么是这样选取的啊,但是直接交替选的,然后只过了百分之十几,果然还是太菜了😂
1 回复 分享
发布于 2021-07-25 21:23
强呀,学习学习
1 回复 分享
发布于 2021-07-25 21:30
第三题一直为0,也不知道为啥,就很烦。 #include<iostream> #include<vector> #include<stdio.h> #include<algorithm> #include<stdlib.h> using namespace std; bool nthUglyNumber(vector<int> test) { int a = test[0], b = test[1], c = test[2], d = test[3]; while (d > a) { if (d % c == 0) d = d / c; else { d = d - b; } } if (d == a) return true; else return false; } int main() { int T; cin >> T; vector<vector<int>> inputs(T, vector<int>(4)); for (int i = 0;i < T;i++) { cin >> inputs[i][0] >> inputs[i][1] >> inputs[i][2] >> inputs[i][3]; } bool a; for (int i = 0;i < T;i++) { a = nthUglyNumber(inputs[i]); cout << a; if (i < T - 1) cout << endl; } }
1 回复 分享
发布于 2021-07-25 21:48
题目是什么啊
1 回复 分享
发布于 2021-07-25 23:10
妙啊!太强了!!
1 回复 分享
发布于 2021-07-26 01:16
我diao  太牛了
1 回复 分享
发布于 2021-07-26 10:19
牛批!
1 回复 分享
发布于 2021-07-26 10:35

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
牛客154160166号:9月底还给我发短信,好奇怪,我24届的
点赞 评论 收藏
分享
67 126 评论
分享
牛客网
牛客企业服务