Problem Statement
Determine whether it is possible that for two non-negative integers A and B we have both:
- A or B = pairOr
- A + B = pairSum
Above, "or" denotes the bitwise-or operator. Each bit of the result is the logical or of the corresponding bits of the operands. For example, in base 2 we have (1100 or 0101) = 1101. The same equation with the numbers written in base 10 looks as follows: (12 or 5) = 13.
Return "Possible" if we can find such A and B, and "Impossible" if not.
Definition
- Class:
- OrAndSumEasy
- Method:
- isPossible
- Parameters:
- long, long
- Returns:
- String
- Method signature:
- String isPossible(long pairOr, long pairSum)
- (be sure your method is public)
Constraints
- pairOr will be between 0 and 1,000,000,000,000,000,000 (10^18), inclusive.
- pairSum will be between 0 and 1,000,000,000,000,000,000 (10^18), inclusive.
Examples
7
11
Returns: "Possible"
One of the solution is: A = 5 and B = 6.
11
7
Returns: "Impossible"
We can show the sum should be at least as large as or, so it is impossible.
999799115789631487
999999999999999999
Returns: "Possible"
One of the solution is a = 111111111111111111, b = 888888888888888888.
1
100
Returns: "Impossible"
0
0
Returns: "Possible"
394967839734
394970601418
Returns: "Possible"
12464276008574679
12464277678038876
Returns: "Possible"
261049269240
295478484056
Returns: "Possible"
8908532284710911
8908532284712131
Returns: "Possible"
2961741739204603
2961741739207035
Returns: "Possible"
3027214357174
3027214357174
Returns: "Possible"
24949950504399
24950084986331
Returns: "Possible"
4053656222203
4053656222260
Returns: "Possible"
3315689896994557
3315689900936461
Returns: "Possible"
12838432929166
12838433094422
Returns: "Possible"
3926712924
3926713000
Returns: "Possible"
173541613667086182
173542752169555146
Returns: "Possible"
2448242687
2450344241
Returns: "Possible"
4258126165114999
4258126165115017
Returns: "Possible"
407
408
Returns: "Possible"
140835666522846
140861436646686
Returns: "Possible"
40114650179582
40561364602254
Returns: "Possible"
4151528147386191
4155926870762333
Returns: "Possible"
25750730751
25751517343
Returns: "Possible"
378456261
378456265
Returns: "Possible"
380100534
382251708
Returns: "Possible"
495269758100953
495341167249250
Returns: "Possible"
92919936990
92919937902
Returns: "Possible"
79435588013
79435588017
Returns: "Possible"
4294950622
4336080674
Returns: "Possible"
1423900635
1432299556
Returns: "Possible"
44798739480308
44798739489016
Returns: "Possible"
19
20
Returns: "Possible"
11882342777600869
11882342777600873
Returns: "Possible"
369022771
369022772
Returns: "Possible"
1365
1365
Returns: "Possible"
27615
27625
Returns: "Possible"
1486311421
1486312781
Returns: "Possible"
424261952450068399
424261952450201009
Returns: "Possible"
52776415193663
58723066382944
Returns: "Possible"
265705205179
265705215429
Returns: "Possible"
4159307644463
4159307644463
Returns: "Possible"
1642932438817535
1642932438817733
Returns: "Possible"
4836410162665215
4836410181573889
Returns: "Possible"
80004008763629493
80004009199873722
Returns: "Possible"
47175431648
49861133824
Returns: "Possible"
19446306776018570
19446306792888978
Returns: "Possible"
286483342590
286483342822
Returns: "Possible"
42221235685228542
42267626032143070
Returns: "Possible"
2490093
2535693
Returns: "Possible"
439637825002060263
439637825002060264
Returns: "Possible"
391535
391546
Returns: "Possible"
47098
47226
Returns: "Possible"
293447
293450
Returns: "Possible"
8159
9697
Returns: "Possible"
4193301471
4193301472
Returns: "Possible"
2734587870
2735906864
Returns: "Possible"
475278321500
475278362972
Returns: "Possible"
659262264688574
659262264690014
Returns: "Possible"
895620870037502
908823612450118
Returns: "Possible"
62350206164463
62350206166610
Returns: "Possible"
124245323
124245326
Returns: "Possible"
2834191438849786
2834191438849796
Returns: "Possible"
569063227295374221
741613162093194765
Returns: "Possible"
117171027903
156920809939
Returns: "Possible"
976238
82
Returns: "Impossible"
32706293395976015
175736812
Returns: "Impossible"
86446771528
1072
Returns: "Impossible"
21534907208447718
10
Returns: "Impossible"
93862579936819348
32428
Returns: "Impossible"
10666932038127
949448013
Returns: "Impossible"
10388
6985576414537351
Returns: "Impossible"
83372298386645805
454102
Returns: "Impossible"
7843555
11463
Returns: "Impossible"
7095462
69373979813000
Returns: "Impossible"
17798745092
245352410088325592
Returns: "Impossible"
53333833
40332817518613
Returns: "Impossible"
48946948888
35357
Returns: "Impossible"
68
929281562022589800
Returns: "Impossible"
432462067572651
726437834775564466
Returns: "Impossible"
125470
4190941
Returns: "Impossible"
38
544751677
Returns: "Impossible"
909
45457468119
Returns: "Impossible"
99184174421637
4216265020
Returns: "Impossible"
73639466452143
494098543069775819
Returns: "Impossible"
99
1
Returns: "Impossible"
547100716030
839
Returns: "Impossible"
64913705122529969
6828
Returns: "Impossible"
963748843390100017
126179352643
Returns: "Impossible"
790755382580870
77714674456593
Returns: "Impossible"
8
50009297991519680
Returns: "Impossible"
57
10756546375907028
Returns: "Impossible"
844794743482
810
Returns: "Impossible"
54615922155252677
18498214219607
Returns: "Impossible"
67423734978132
608187
Returns: "Impossible"
67
50774
Returns: "Impossible"
48457
6607
Returns: "Impossible"
829460520552605940
17
Returns: "Impossible"
563484748515290091
523702373633
Returns: "Impossible"
653
70610803115174
Returns: "Impossible"
757004
318549079
Returns: "Impossible"
3331737
417
Returns: "Impossible"
81399455
571011983894056004
Returns: "Impossible"
6841813430734689
4823821333
Returns: "Impossible"
456747706710539
1046387547
Returns: "Impossible"
602476362130
6382
Returns: "Impossible"
90369150608989178
2668670538
Returns: "Impossible"
361864772662350
6356
Returns: "Impossible"
3
3053613605
Returns: "Impossible"
2
79
Returns: "Impossible"
1613
950
Returns: "Impossible"
55035976425980079
93950480049934289
Returns: "Impossible"
3
31986363470
Returns: "Impossible"
7148
21
Returns: "Impossible"
1
89
Returns: "Impossible"
0
1
Returns: "Impossible"
999799115789631500
1000000000000000000
Returns: "Impossible"
2
100
Returns: "Impossible"
1
0
Returns: "Impossible"
1000000000
1000000000000000000
Returns: "Impossible"
3
19
Returns: "Impossible"
9007199254740992
18014398509481984
Returns: "Possible"
12
14
Returns: "Impossible"
14
15
Returns: "Impossible"
45
62
Returns: "Impossible"
2
200
Returns: "Impossible"
7
10
Returns: "Possible"
7
14
Returns: "Possible"
15
31
Returns: "Impossible"
1
2
Returns: "Possible"
6
8
Returns: "Possible"
9
16
Returns: "Impossible"
9
10
Returns: "Possible"
1108
1534
Returns: "Impossible"
18
18
Returns: "Possible"
43
63
Returns: "Impossible"