我为这个问题编写代码。
https://codeforces.com/contest/1744/problem/B
对于下面给出的输入,我的代码可以完美地工作,
输入:
1
1 1
1
1 1
输出:
2
输入:
1
3 3
1 2 4
0 2
1 3
0 5
输出:
11
14
29
输入:
1
6 7
1 3 2 4 10 48
1 6
0 5
0 4
0 5
1 3
0 12
0 1
输出:
80
100
100
100
118
190
196
但是对于这个输入:
1
6 7
1000000000 1000000000 1000000000 11 15 17
0 17
1 10000
1 51
0 92
0 53
1 16
0 1
输出应该是这样的:
3000000094
3000060094
3000060400
3000060952
3000061270
3000061366
3000061366
但是我的代码给出了一些垃圾值或者错误的输出,这段代码是:
-1294967202
-1294967202
-1294906896
-1294906344
-1294906026
-1294905930
-1294905930
我不明白主要问题在哪里。请帮我解决这个问题。这是我的代码。如果你发现问题,请帮我解决。提前感谢……
#include<stdio.h>
int odd_even_incre(long long a[], int x, int y,int n)
{
int i,j;
long long sum=0;
if(x%2==0){
for(i=0; i<n ;i++){
if(a[i]%2==0){
a[i]= a[i]+y;
}
sum = sum+a[i];
}
}
else{
for(i=0; i<n ;i++){
if(a[i]%2!=0){
a[i]= a[i]+y;
}
sum = sum+a[i];
}
}
return sum;
}
int main()
{
int n,q,t, i,j,x,y;
long long a[100000],result;
scanf("%d", &t);
for(i=0; i<t; i++)
{
scanf("%d %d", &n, &q);
for(j=0 ; j<n ; j++)
{
scanf("%lld", &a[j]);
}
for (j=0; j<q; j++)
{
scanf("%d %d", &x, &y);
result = odd_even_incre(a,x,y,n);
printf("%lldn", result);
}
}
return 0;
}
我已经修好了。它将会是
long long odd_even_incre(){}
不是
int odd_even_incre(){}
就是这样。谢谢大家