• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie z olimpiady 2008/2009

Object Storage Arubacloud
0 głosów
245 wizyt
pytanie zadane 30 lipca 2018 w C i C++ przez siedla Nowicjusz (120 p.)
/*************************************************************************
 *                                                                       *
 *                     XVI Olimpiada Informatyczna                       *
 *                                                                       *
 *   Zadanie:  Kamyki (KAM)                                              *
 *   Plik:     kam.cpp                                                   *
 *   Autor:    Szymon Wrzyszcz                                           *
 *   Opis:     Rozwiazanie wzorcowe O(n)                                 *
 *                                                                       *
 *                                                                       *
 *************************************************************************/

#include <stdio.h>

const int MAXN = 1000; // max. liczba kupek kamieni

int a[MAXN+1]; // liczba kamieni na poszczegolnych kupkach
int d[MAXN+1]; // odwrocony ciag roznic rozmiarow kolejnych kupek kamieni

int main() {
  int u;       // liczba ustawien poczatkowych do przeanalizowania
  scanf("%d", &u);
  for (int i=0; i<u; i++) {
    int n;                   // liczba kupek kamieni
    int x = 0;               // xor d[1], d[3], ...
    
    scanf("%d", &n);
    for (int j=1; j<=n; j++)
      scanf("%d", &a[j]);
    
    for (int j=1; j<n; j++)  // wyznaczanie ciagu d
      d[j] = a[n-j+1] - a[n-j];
    d[n] = a[1];
    
    for (int j=1; j<=n; j+=2)// xor-uj elementy o nieparzystych indeksach
      x ^= d[j];
      
    puts(x?"TAK":"NIE");
  }
  return 0;
}

Wytłumaczy mi ktoś jak działa ta linijka:  x ^= d[j]; . Bo nie rozumiem co robi ten daszek.

2 odpowiedzi

+1 głos
odpowiedź 30 lipca 2018 przez OdsetekGlupoty Pasjonat (15,360 p.)
komentarz 30 lipca 2018 przez siedla Nowicjusz (120 p.)
Dzieki za pomoc!
+1 głos
odpowiedź 30 lipca 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Hasło do googlowania: operator binarny XOR.

Jest to w pewnym sensie odmiana operatora OR. Różnica polega na tym, że OR zwraca true gdy jeden z operandów lub oba jednocześnie spełniają dany warunek, natomiast operator XOR zwróci prawdę tylko wtedy, gdy albo jeden albo drugi spełnia warunek. Gdy oba operandy jednocześnie mają wartość zero lub jeden to operator XOR zwróci false (natomiast OR zwróciłby w tym wypadku true).

image

Podobne pytania

0 głosów
0 odpowiedzi 224 wizyt
+1 głos
4 odpowiedzi 491 wizyt
+4 głosów
0 odpowiedzi 189 wizyt
pytanie zadane 10 grudnia 2021 w Offtop przez wojtek_suchy Mądrala (6,880 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...