¡Por favor escriba esta pregunta sobre algoritmos en lenguaje C!
#include?
int?main()
{
int?n,?k;
mientras (?scanf("%d?%d",&n,&k)?!=?EOF?)
{
int?i,?x?=?0;
int?num[n];
for(i?=?0;?i?2*n-k;? ++i){
scanf("%d",?num+i);
x?k?==?1?){
printf("%d\n",?x) ;
}else?if(?k?==?2?){
int?index?=?0;
/ /index registra el primer 1 que aparece en la posición baja de x después de la diferenciación
for(i?=?0;?i?32;? ++i)
if(? (x>>i)&1?==?1?){
index?=?i;
descanso;
} p>
//Por lo tanto, la matriz original se puede dividir en dos partes con bits 1 y bits no 1
//Cada una de las dos partes es diferente, o el resultado es el deseado
// p>
int?res1?=?0, res2?=?0;
for(i?=?0;?i?2* n-k;? ++i){
si(? (num[i]>>índice)&1?==?1?)
res1?^=?num[i ];
else
res2?^=?num[i];
}
if(?res1?>?res2 ?){
x?= ?res1;
res1?=?res2;
res2?=?x;
}?
printf("%d ?%d\n",?res1,?res2);
}
}
}? p>
¿volver? p>