Cod sursa(job #739248)
| Utilizator | Data | 22 aprilie 2012 15:03:49 | |
|---|---|---|---|
| Problema | A+B | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <cstdio>
#include <cassert>
using namespace std;
int main() {
assert(freopen("adunare.in", "rt", stdin));
assert(freopen("adunare.out", "wt", stdout));
int A, B;
assert(scanf("%d %d", &A, &B) == 2);
int s = 0, t = 0;
for (int i = 0; i <= 31; i++) {
s |= (((A >> i) & 1) ^ ((B >> i) & 1) ^ t) << i;
t = (((A >> i) & 1) & t) | (((B >> i) & 1) & t) |
(((A >> i) & 1) & ((B >> i) & 1));
}
printf("%d\n", s);
return 0;
}
