关于#实在#的问题,如何解决?

这个问题难度太大了,应该怎么解决啊,请指教。我会十分感激你的,谢谢

img

img

#include <iostream>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int *a = new int[n];
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=0;i<m;i++)
    {
        char c;
        int p,q,r;
        cin>>c;
        switch(c)
        {
        case 'C':
            {
                cin>>p>>q>>r;
                for(int i=p-1;i<q;i++)
                    a[i] += r;
            }
            break;
        case 'Q':
            {
                cin>>p>>q;
                int sum = 0;
                for(int i=p-1;i<q;i++)
                    sum += a[i];
                cout<<sum<<endl;
            }
            break;
        }
        getchar();
    }
    return 0;
}

这个很简单啊,用循环对数组元素加d,.与求和即可
你题目的解答代码如下:

#include <iostream>
using namespace std;
int main()
{
    int n,m, sum, l,r,d,i,j;
    char ch;
    cin >> n >> m;
    int a[n+1];
    for (i = 1; i <= n; i++)
        cin >> a[i];
    for (i = 0; i < m; i++)
    {
        cin >> ch;
        if (ch=='C')
        {
            cin >> l >> r >> d;
            for (j = l; j <= r; j++)
                a[j] += d;
        }
        else if (ch=='Q')
        {
            cin >> l >> r;
            sum = 0;
            for (j = l; j <= r; j++)
                sum += a[j];
            cout << sum << endl;
        }
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img