Untitled
unknown
plain_text
6 months ago
1.8 kB
5
Indexable
import java.util.*; import java.io.*; public class Main { // Method to find the missing and repeated numbers public static int[] findMissing(int N, int[] A) { long expected_sum = (long) N * (N + 1) / 2; long expected_square_sum = (long) N * (N + 1) * (2 * N + 1) / 6; long actual_sum = 0; long actual_square_sum = 0; // Calculate actual sum and sum of squares for (int i = 0; i < N; i++) { actual_sum += A[i]; actual_square_sum += (long) A[i] * A[i]; } // Calculate the differences long sum_diff = expected_sum - actual_sum; // missing - repeated long square_sum_diff = expected_square_sum - actual_square_sum; // missing^2 - repeated^2 // Calculate missing + repeated using (missing^2 - repeated^2) / (missing - repeated) long sum_plus_diff = square_sum_diff / sum_diff; // Find missing and repeated numbers int missing = (int) ((sum_diff + sum_plus_diff) / 2); int repeated = (int) (sum_plus_diff - missing); // Return the result in increasing order return new int[] {Math.min(repeated, missing), Math.max(repeated, missing)}; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Reading input int N = sc.nextInt(); int[] A = new int[N]; for (int i = 0; i < N; i++) { A[i] = sc.nextInt(); } sc.close(); // Finding the missing and repeated numbers int[] result = findMissing(N, A); // Output the result in increasing order System.out.print(result[0] + " " + result[1]); } }
Editor is loading...
Leave a Comment