Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <unordered_map>
- using namespace std;
- typedef long long int ll;
- const ll goal = 3407298087646051ll;
- const ll N = 48;
- const ll limit = 1 << (N/2);
- const ll first_half[N] = {
- 26202120271102ll, 135428455329960ll, 226145215191180ll, 38455307198310ll,
- 158395314926886ll, 277270108468340ll, 38078189488823ll, 7031915446272ll,
- 247000637688469ll, 228977091817671ll, 256367647107166ll, 190531347466612ll,
- 206895433573789ll, 168781003454738ll, 28930412047822ll, 188583634192561ll,
- 34220655142866ll, 126339871758705ll, 186833711857971ll, 40038576937759ll,
- 257739027555181ll, 191847862752289ll, 49450796464709ll, 94828960768221ll
- };
- const ll second_half[N] = {
- 26429280575443ll, 141300452697398ll, 89608755458014ll, 24069321165527ll,
- 269955250224311ll, 137049179130697ll, 30013333805191ll, 45524295173439ll,
- 259726767088158ll, 62421348646183ll, 226835227234443ll, 8307450244249ll,
- 115379801108132ll, 164730692261102ll, 72682278146483ll, 48841420576159ll,
- 48754324556907ll, 157844925781173ll, 177587100004140ll, 151008742623371ll,
- 251706689387188ll, 32611554746822ll, 43532371092965ll, 5830775211360ll
- };
- int main() {
- unordered_map<ll, ll> second_half_goals;
- for(ll i = 0; i < limit; i++) {
- ll k = i;
- ll u = 0;
- ll subset_sum = 0;
- while(k > 0) {
- if(k % 2) {
- subset_sum += first_half[u];
- }
- k /= 2; u++;
- }
- second_half_goals[goal - subset_sum] = i;
- }
- for(ll j = 0; j < limit; j++) {
- ll k = j;
- ll u = 0;
- ll subset_sum = 0;
- while(k > 0) {
- if(k % 2) {
- subset_sum += second_half[u];
- }
- k /= 2; u++;
- }
- if(second_half_goals.count(subset_sum)) {
- ll i = second_half_goals[subset_sum];
- cout << "Found answer " << i << " " << j << "\n";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment