כי במקרה של חיבור כל המספרים במערכים גדולים מאוד זה לא באמת יעבוד כי תגיע לסכום שהוא גדול יותר מהINT הכי גדול שקיים....הפתרון עם XOR הולך ככה:
בעיקרון כשאתה עושה XOR של שני מספרים זהים אז התוצאה זה 0.
אז אם תעשה XOR עם כל המספרים במערך שלך, ביחד עם כל המספרים במערך מלא, אתה תקבל בדיוק את המספר החסר...
המימוש זה משהו בסגנון:
for(int i=0;i<100;i++) { if(ARRAY != 0) XOR ^= ARRAY; XOR ^= (i + 1); } return XOR;
|