我无法弄清楚我在这里做错了什么。
代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution
{
static void Main(String[] args)
{
string[] lineParts = Console.ReadLine().Split(' ');
int k = Convert.ToInt32(lineParts[1]);
int[] arr = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse);
var indices = Enumerable.Range(0, arr.Length - 1);
int pairsDivideK = (from i in indices
from j in indices
where i < j && ((arr[i] + arr[j]) % k == 0)
select 1).ToList().Count / 2;
Console.WriteLine(pairsDivideK);
}
}
输入:
6 3
1 3 2 6 1 2
预期产出:
5
我的输出:
1
答案 0 :(得分:2)
首先,你不必除以2.由于where i < j
条件,没有重复。
第二:您必须使用Enumerable.Range(0, arr.Length)
(无-1
),因为第二个参数不是上限,而是元素的数量。
所以你的代码应该是:
...
var indices = Enumerable.Range(0, arr.Length);
int pairsDivideK = (from i in indices
from j in indices
where i < j && ((arr[i] + arr[j]) % k == 0)
select 1).ToList().Count;
Console.WriteLine(pairsDivideK);