请问这里为什么不提取公因式就错啊?(第30行)
#include <stdio.h>
#define MAX 100001
const int MOD = 10007;
int color[MAX];
int number[MAX];
int class[MAX][2];
int book[MAX][2];
int main(void)
{
int n, m;
int sum = 0;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
scanf("%d", &number[i]);
for (int i = 1; i <= n; i++)
{
scanf("%d", &color[i]);
class[color[i]][i % 2] = (class[color[i]][i % 2] + number[i]) % MOD;
book[color[i]][i % 2]++;
}
for (int i = 1; i <= n; i++)
sum = (sum + i * class[color[i]][i % 2] + i * number[i] * (book[color[i]][i % 2] - 2) % MOD) % MOD;
printf("%d\n", sum % MOD);
return 0;
}
#include <stdio.h>
#define MAX 100001
const int MOD = 10007;
int color[MAX];
int number[MAX];
int class[MAX][2];
int book[MAX][2];
int main(void)
{
int n, m;
int sum = 0;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
scanf("%d", &number[i]);
for (int i = 1; i <= n; i++)
{
scanf("%d", &color[i]);
class[color[i]][i % 2] = (class[color[i]][i % 2] + number[i]) % MOD;
book[color[i]][i % 2]++;
}
for (int i = 1; i <= n; i++)
sum = (sum + i * (class[color[i]][i % 2] + number[i] * (book[color[i]][i % 2] - 2) % MOD)) % MOD;
printf("%d\n", sum % MOD);
return 0;
}