fork(1) download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main(void)
  6. {
  7. int testCases=0;
  8. long long n, k, ans, i;
  9. long long *arr;
  10. char str[5];
  11. scanf("%d",&testCases);
  12. while(testCases--)
  13. {
  14. scanf("%lld %lld %lld",&n,&k,&ans);
  15. arr=(long long*)malloc(n*sizeof(long long));
  16. for(i=0; i<n; i++)
  17. scanf("%lld",&arr[i]);
  18. //for(i=0; i<n; i++)
  19. // printf("%ld ",arr[i]);
  20. //scanf("%[^\n]",str);
  21. gets(str);
  22. //printf("%s\n",str);
  23. if(strcmp(str,"AND")==0)
  24. {
  25. //printf("1\n");
  26. if(k!=0)
  27. {
  28. for(i=0; i<n; i++)
  29. ans= ans & arr[i];
  30. // printf("%ld ",ans);
  31. }
  32. }
  33. else if(strcmp(str,"XOR")==0)
  34. {
  35. //printf("11\n");
  36. if(k%2!=0)
  37. {
  38. for(i=0; i<n; i++)
  39. ans= ans ^ arr[i];
  40. // printf("%ld ",ans);
  41. }
  42. }
  43. else if(strcmp(str,"OR")==0)
  44. {
  45. if(k!=0)
  46. {
  47. for(i=0; i<n; i++)
  48. ans= ans | arr[i];
  49. }
  50. }
  51. printf("%lld\n",ans);
  52. }
  53. return 0;
  54. }
Success #stdin #stdout 0s 2428KB
stdin
3
3 1 0
1 2 3
XOR
3 1 0
1 2 3
AND
3 1 0
1 2 3
OR
stdout
0
0
3