Cube = 24, Triple = (12,16,20)
一开始代码:
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> int get3(int x){ return pow(x,3.0);} int main(){ int n; scanf("%d",&n); int a,b,c,d; for(a=6;a<=n;a++){ for(b=2;b<a;b++){ if(get3(a)<get3(b)+get3(b+1)+get3(b+2))break; for(c=b+1;c<a;c++){ if(get3(a)<get3(b)+get3(c)+get3(c+1)) break; for(d=c+1;d<a;d++) if(get3(a)==get3(b)+get3(c)+get3(d)) printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);} } } return 0;}
将原本需要求立方的操作,用一个循环外数组存储结果:
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> //int get3(int x){ // return pow(x,3.0);} int main(){ int i; int get3[101]; for(i=0;i<101;i++) get3[i]=i*i*i; int n; scanf("%d",&n); int a,b,c,d; for(a=6;a<=n;a++){ for(b=2;b<a;b++){ if(get3[a]<get3[b]+get3[b+1]+get3[b+2])break; for(c=b+1;c<a;c++){ if(get3[a]<get3[b]+get3[c]+get3[c+1]) break; for(d=c+1;d<a;d++) if(get3[a]==get3[b]+get3[c]+get3[d]) printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);} } } return 0;}