Ich kann nicht herausfinden, was ich hier falsch mache.Wo ist der Fehler in meinem Algorithmus, um alle Paare in einem Array zu finden, deren Summe k teilt?
Code:
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);
}
}
Eingang:
6 3
1 3 2 6 1 2
Erwartete Ausgabe:
5
Meine Ausgabe:
1
'wählen 1) .ToList() Count/2', warum machst du das? – user3185569
@ user3185569 Ich dividiere durch 2, um Wiederholungen zu berücksichtigen – user6048670
Und warum sollte ich weniger als j sein? und warum verwendest du nicht den ersten Wert in linesParts, der 6 ist? Kannst du wenigstens erklären, warum du jeden Schritt machst? – user3185569