1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include<stdio.h> #include<stdlib.h> #include<stdbool.h> bool loopCheck(int* arr, int n, int p); int result(int* arr, int count); int main() { int n, time = 0; scanf("%d", &n); int* arr = (int*)malloc(sizeof(int) * n); int arr2[1000] = {0}; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < n; i++) { if (!loopCheck(arr,n,i)) { arr2[time++] = i + 1; } } printf("%d", result(arr2,time)); free(arr); return 0; } bool loopCheck(int* arr,int n, int p) { int time = 0; while (time<n) { if (arr[arr[p] - 1] == p + 1) { return true; } else if (arr[p] == 0) { return false; } else if (arr[p] - 1 == p) { return false; } p=arr[p]-1; } return true; } int result(int* arr, int count) { int xorResult = 0; for (int i = 0; i < count; i++) { xorResult ^= arr[i]; } return xorResult; }
|