99 :
-:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define Q 43
#define R 6096454
long cmb(int a,int b);
long c2n(char *a);
void lt6(char *a);
void set0(char *a,long b);
void main(int argc,char *argv[]){
if(argc==2){
char *mem,*tab,*p1;
int i,j;
long cnt,jnb;
FILE *fp;
100 :
-:2008/10/18(土) 16:40:56 ID:McwsEfkG
mem=malloc(Q*R); srand((unsigned)time(NULL));
tab=malloc(R); set0(tab,R);
fp=fopen(argv[1],"w");
cnt=0; p1=mem;
while(cnt<250000){
lt6(p1); jnb=c2n(p1); if(*(tab+jnb)) continue;
i=j=0;
while(i<Q && j<6){
if(*(p1+i)){
fprintf(fp,"%02d ",i+1); j++; }
i++; }
fprintf(fp,"\n"); p1+=Q; printf("%7d\r",++cnt);
*(tab+jnb)=1; }
fclose(fp); free(mem); free(tab); printf("\n");
}
else puts("l005.c");
}
101 :
-:2008/10/18(土) 16:44:24 ID:McwsEfkG
long cmb(int a,int b){
double i,j;
i=j=1.0; b=(b>a/2)?a-b:b;
while(b>0){
i*=a; j*=b; a--; b--; }
return(long)(i/j);
}
long c2n(char *a){
int i,j,n[6];
long k;
i=j=0;
while(i<Q && j<6){
if(*(a+i)){
n[j]=i+1; j++; }
i++; }
i=0; k=0;
while(i<6){
j=1;
if(i>0) j+=n[i-1];
while(j<n[i]){
k+=cmb(43-j,5-i); j++; }
i++; }
return(k);
}
102 :
-:2008/10/18(土) 16:47:54 ID:McwsEfkG
void lt6(char *a){
int i,j;
set0(a,Q);
i=0;
while(i<6){
j=rand()%Q;
if(*(a+j)==0){
*(a+j)=1; i++; }}
}
void set0(char *a,long b){
long i;
i=0;
while(i<b){
*(a+i)=0; i++; }
}