18/11/04 08:16:50.86 zevnpesP.net
>>412
私は 398投稿者ではありませんが、次のプログラムで答が出せます。
単純に、C[70,7]通りとはせず、ある程度変数の範囲を押さえ込むことがこつかも。
void next(int depth,int *x){
if(depth<7){
int i,is=x[depth-1]+1,ib=x[depth-1]*3+1,ie=ib<70?ib:70;
for(i=is;i<=ie;i++){x[depth]=i;next(depth+1,x);}
}else{
int i,j,k,mem[211],flag;
for(i=1;i<211;i++)mem[i]=0;
for(i=0;i<7;i++){mem[x[i]]++;mem[2*x[i]]++;mem[3*x[i]]++;}
for(i=0;i<6;i++)for(j=i+1;j<7;j++){mem[x[i]+x[j]]++;mem[2*x[i]+x[j]]++;mem[x[i]+2*x[j]]++;}
for(i=0;i<5;i++)for(j=i+1;j<6;j++)for(k=j+1;k<7;k++){mem[x[i]+x[j]+x[k]]++;}
for(i=1,flag=1;i<71;i++)if(mem[i]==0)flag=0;
if(flag==1)printf("%d,%d,%d,%d,%d,%d,%d\n",x[0],x[1],x[2],x[3],x[4],x[5],x[6]);
}
}
int main(){int x[7];x[0]=1;next(1,x);return 0;}
URLリンク(codepad.org)