《看了受制了》第六天,4道题,合计30道题

wxzcch / 2023-09-01 / 原文

2023年8月31日

今天是ACwing的周赛题,和AtCoder。太晚了,还得去211宿舍,就只做4道了。

ACWING5044 求和

题目理解

简单的求和判断,可以作为小孩儿讲课题。

代码实现

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;

    while(n -- )
    {
        int l, r;
        cin >> l >> r;

        int sum = 0;
        while(l --)
        {
            int a;
            cin >> a;
            sum += a;
        }
        if(sum == r)
            cout << "YES";
        else
            cout << "NO";
        cout << endl;
    }


    return 0;
}

ACWING5045 三角形数

题目理解

这个题我用的是双指针。因为我们进行初次判断后发现小于1e9那么最多只有,44720个数字。然后只要q[i] + q[j] > n的就让j--即可。

代码实现

#include<iostream>
#include<vector>
using namespace std;

// 一共有44720个数


vector<int> q;

int n;

int main()
{
    cin >> n;

    int  k = 1, p = 2;

    while(k < n)
    {
        q.push_back(k);
        k += p;
        p++;
    }

    int flag = 0;

    for(int i = 0, j = q.size() - 1; i <= j; i++)
    {

        while(q[i] + q[j] > n)
            j--;



        if(q[i] + q[j] == n)
        {
            flag = 1;
            break;
        }
    }

    if(flag)
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

AtCoder ABC101 A题

题目理解

模拟题

代码实现

#include<iostream>
using namespace std;

int main()
{
    string n;
    cin >> n;
    int res = 0;
    
    for(int i = 0; i < n.size(); i++)
        if(n[i] == '-')
            res--;
        else
            res++;
            
    cout << res;
    return 0;
}

AtCoder ABC101 B题

题目理解

是个小模拟题,方法都是非常ez的。

代码实现

#include<iostream>
using namespace std;

int main()
{
    string s;
    cin >> s;
    
    int sum = 0;
    int num = 0;
    for(int i = 0; i < s.size(); i++)
    {
        sum += ((int)s[i]) - 48;
        num = num * 10 + (((int)s[i]) - 48);
    }
    
    if(num % sum == 0)
        cout << "Yes";
    else
        cout << "No";
    
    
    return 0;
}