Perfect Cubes
Time Limit: 1000 MS Memory Limit: 10000 K
Total Submissions: 12581 Accepted: 6697
Description
For hundreds of years Fermat's Last Theorem, which stated simply that for n> 2 there exist no integers a, B, c> 1 such that a ^ n = B ^ n + c ^ n, has remained elusively unproven. (A recent proof is believed to be correct, though it is still undergoing scrutiny .) it is possible, however, to find integers greater than 1 that satisfy the "perfect cube" equation a ^ 3 = B ^ 3 + c ^ 3 + d ^ 3 (e.g. a quick calculation will show that the equation 12 ^ 3 = 6 ^ 3 + 8 ^ 3 + 10 ^ 3 is indeed true ). this problem requires that you write a program to find all sets of numbers {a, B, c, d} which satisfy this equation for a <= N.
Input
One integer N (N <= 100 ).
Output
The output shoshould be listed as shown below, one perfect cube per line, in non-decreasing order of a (I. e. the lines shoshould be sorted by their a values ). the values of B, c, and d shoshould also be listed in non-decreasing order on the line itself. there do exist several values of a which can be produced from multiple distinct sets of B, c, and d triples. in these cases, the triples with the smaller B values shocould be listed first.
Sample Input
24 Sample Output
Cube = 6, Triple = (3, 4, 5)
Cube = 12, Triple = (6, 8, 10)
Cube = 18, Triple = (2, 12, 16)
Cube = 18, Triple = (9, 12, 15)
Cube = 19, Triple = (3, 10, 18)
Cube = 20, Triple = (7, 14, 17)
Cube = 24, Triple = (12, 16, 20) Source
Mid-Central USA 1995
Ask the input n <= 100 in the range of n including n find a so that the power of a is equal to the power of bcd three and if such a according to a from small large outputs are output from A to B in the same way.
In addition, the input in the Triple must follow a non-decreasing order.
The Code memory used to create a table exceeds the memory size of MLE ac.
#include<stdio.h>#include<set>using namespace std;struct haha{ int b,c,d; friend bool operator< (struct haha ai,const struct haha bi) { return ai.b<bi.b; }}temp,q;int hash[1000000+5];set<struct haha>ss[1000000+5];int main(){ int n,i,j,k; int b[100]; for(i=1;i<=100;i++) { b[i]=i*i*i; hash[i*i*i]=i;} for(i=2;i<=100;i++) for(j=i+1;b[j]+b[i]<=1000000;j++) { for(k=j+1;b[i]+b[j]+b[k]<=1000000;k++) { int mid; mid=b[i]+b[j]+b[k]; mid=hash[mid]; if(mid==0) continue; q.b=i;q.c=j;q.d=k; ss[mid].insert(q); } } set<struct haha>::iterator it; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) { if(!ss[i].empty()) for(it=ss[i].begin();it!=ss[i].end();it++) printf("Cube = %d, Triple = (%d,%d,%d)\n",i,it->b,it->c,it->d); } } return 0;}
#include<stdio.h>#include<set>using namespace std;struct haha{ int b,c,d,id;}q[100];int main(){q[0].id=6;q[0].b=3;q[0].c=4;q[0].d=5;q[1].id=12,q[1].b=6,q[1].c=8,q[1].d=10;q[2].id=18,q[2].b=2,q[2].c=12,q[2].d=16;q[3].id=18,q[3].b=9,q[3].c=12,q[3].d=15;q[4].id=19,q[4].b=3,q[4].c=10,q[4].d=18;q[5].id=20,q[5].b=7,q[5].c=14,q[5].d=17;q[6].id=24,q[6].b=12,q[6].c=16,q[6].d=20;q[7].id=25,q[7].b=4,q[7].c=17,q[7].d=22;q[8].id=27,q[8].b=3,q[8].c=18,q[8].d=24;q[9].id=28,q[9].b=18,q[9].c=19,q[9].d=21;q[10].id=29,q[10].b=11,q[10].c=15,q[10].d=27;q[11].id=30,q[11].b=15,q[11].c=20,q[11].d=25;q[12].id=36,q[12].b=4,q[12].c=24,q[12].d=32;q[13].id=36,q[13].b=18,q[13].c=24,q[13].d=30;q[14].id=38,q[14].b=6,q[14].c=20,q[14].d=36;q[15].id=40,q[15].b=14,q[15].c=28,q[15].d=34;q[16].id=41,q[16].b=2,q[16].c=17,q[16].d=40;q[17].id=41,q[17].b=6,q[17].c=32,q[17].d=33;q[18].id=42,q[18].b=21,q[18].c=28,q[18].d=35;q[19].id=44,q[19].b=16,q[19].c=23,q[19].d=41;q[20].id=45,q[20].b=5,q[20].c=30,q[20].d=40;q[21].id=46,q[21].b=3,q[21].c=36,q[21].d=37;q[22].id=46,q[22].b=27,q[22].c=30,q[22].d=37;q[23].id=48,q[23].b=24,q[23].c=32,q[23].d=40;q[24].id=50,q[24].b=8,q[24].c=34,q[24].d=44;q[25].id=53,q[25].b=29,q[25].c=34,q[25].d=44;q[26].id=54,q[26].b=6,q[26].c=36,q[26].d=48;q[27].id=54,q[27].b=12,q[27].c=19,q[27].d=53;q[28].id=54,q[28].b=27,q[28].c=36,q[28].d=45;q[29].id=56,q[29].b=36,q[29].c=38,q[29].d=42;q[30].id=57,q[30].b=9,q[30].c=30,q[30].d=54;q[31].id=58,q[31].b=15,q[31].c=42,q[31].d=49;q[32].id=58,q[32].b=22,q[32].c=30,q[32].d=54;q[33].id=60,q[33].b=21,q[33].c=42,q[33].d=51;q[34].id=60,q[34].b=30,q[34].c=40,q[34].d=50;q[35].id=63,q[35].b=7,q[35].c=42,q[35].d=56;q[36].id=66,q[36].b=33,q[36].c=44,q[36].d=55;q[37].id=67,q[37].b=22,q[37].c=51,q[37].d=54;q[38].id=69,q[38].b=36,q[38].c=38,q[38].d=61;q[39].id=70,q[39].b=7,q[39].c=54,q[39].d=57;q[40].id=71,q[40].b=14,q[40].c=23,q[40].d=70;q[41].id=72,q[41].b=8,q[41].c=48,q[41].d=64;q[42].id=72,q[42].b=34,q[42].c=39,q[42].d=65;q[43].id=72,q[43].b=36,q[43].c=48,q[43].d=60;q[44].id=75,q[44].b=12,q[44].c=51,q[44].d=66;q[45].id=75,q[45].b=38,q[45].c=43,q[45].d=66;q[46].id=76,q[46].b=12,q[46].c=40,q[46].d=72;q[47].id=76,q[47].b=31,q[47].c=33,q[47].d=72;q[48].id=78,q[48].b=39,q[48].c=52,q[48].d=65;q[49].id=80,q[49].b=28,q[49].c=56,q[49].d=68;q[50].id=81,q[50].b=9,q[50].c=54,q[50].d=72;q[51].id=81,q[51].b=25,q[51].c=48,q[51].d=74;q[52].id=82,q[52].b=4,q[52].c=34,q[52].d=80;q[53].id=82,q[53].b=12,q[53].c=64,q[53].d=66;q[54].id=82,q[54].b=19,q[54].c=60,q[54].d=69;q[55].id=84,q[55].b=28,q[55].c=53,q[55].d=75;q[56].id=84,q[56].b=42,q[56].c=56,q[56].d=70;q[57].id=84,q[57].b=54,q[57].c=57,q[57].d=63;q[58].id=85,q[58].b=50,q[58].c=61,q[58].d=64;q[59].id=87,q[59].b=20,q[59].c=54,q[59].d=79;q[60].id=87,q[60].b=26,q[60].c=55,q[60].d=78;q[61].id=87,q[61].b=33,q[61].c=45,q[61].d=81;q[62].id=87,q[62].b=38,q[62].c=48,q[62].d=79;q[63].id=88,q[63].b=21,q[63].c=43,q[63].d=84;q[64].id=88,q[64].b=25,q[64].c=31,q[64].d=86;q[65].id=88,q[65].b=32,q[65].c=46,q[65].d=82;q[66].id=89,q[66].b=17,q[66].c=40,q[66].d=86;q[67].id=90,q[67].b=10,q[67].c=60,q[67].d=80;q[68].id=90,q[68].b=25,q[68].c=38,q[68].d=87;q[69].id=90,q[69].b=45,q[69].c=60,q[69].d=75;q[70].id=90,q[70].b=58,q[70].c=59,q[70].d=69;q[71].id=92,q[71].b=6,q[71].c=72,q[71].d=74;q[72].id=92,q[72].b=54,q[72].c=60,q[72].d=74;q[73].id=93,q[73].b=32,q[73].c=54,q[73].d=85;q[74].id=95,q[74].b=15,q[74].c=50,q[74].d=90;q[75].id=96,q[75].b=19,q[75].c=53,q[75].d=90;q[76].id=96,q[76].b=48,q[76].c=64,q[76].d=80;q[77].id=97,q[77].b=45,q[77].c=69,q[77].d=79;q[78].id=99,q[78].b=11,q[78].c=66,q[78].d=88;q[79].id=100,q[79].b=16,q[79].c=68,q[79].d=88;q[80].id=100,q[80].b=35,q[80].c=70,q[80].d=85; int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<=80;i++) if(q[i].id<=n) { printf("Cube = %d, Triple = (%d,%d,%d)\n",q[i].id,q[i].b,q[i].c,q[i].d); } } return 0;}