Nim-tricks

From Algopedia
Jump to navigationJump to search
/*
   Nume program   : nim_tricks.c
   Nume concurent : Coman Andrei
*/
#include <stdio.h>
#include <stdlib.h>

int v[30];
int citire(){
    char c;
    int i=0;
    c=fgetc(stdin);
    do{
        if(c==' ')
            i++;
        else
            v[i]=v[i]*10+c-'0';
        c=fgetc(stdin);
    }while(c!='\n');
    i++;
    return i;
}

void scriere(int n){
    int i;
    printf("%d", v[0]);
    for(i=1;i<n;i++)
        printf(" %d", v[i]);
    printf("\n");
    return 0;
}

int main()
{
    int n, sn=0, i, st, p, sm=100000000;
    n=citire();
    for(i=0;i<n;i++)
        sn=sn^v[i];
    if(sn==0){
        i=0;
        while(v[i]==0)
            i++;
        v[i]--;
    }
    else{
        for(i=0;i<n;i++){
            st=sn^v[i];
            if(st<sm && st<=v[i]){
                sm=st;
                p=i;
            }
        }
    v[p]=sm;
    }
    scriere(n);
    return 0;
}