这个问题难度太大了,应该怎么解决啊,请指教。我会十分感激你的,谢谢
#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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!