lotto002.cpp

#include <stdio.h>


// 로또조합 순서값(1~8145060)으로 로또조합 알아내기

void getLottoNumberByOrderNumber(int o, int *r)

{

int sum=0,nn=0,a=0,b=0,c=0,d=0,e=0,f=0;


for(a=1; a<=40; a++) {

nn = ((45-a)*(45-a-1)*(45-a-2)*(45-a-3)*(45-a-4)) / (5*4*3*2*1);

if(sum+nn>=o) break;

sum += nn;

}


for(b=a+1; b<=41; b++) {

nn = ((45-b)*(45-b-1)*(45-b-2)*(45-b-3)) / (4*3*2*1);

if(sum+nn>=o) break;

sum += nn;

}


for(c=b+1; c<=42; c++) {

nn = ((45-c)*(45-c-1)*(45-c-2)) / (3*2*1);

if(sum+nn>=o) break;

sum += nn;

}


for(d=c+1; d<=43; d++) {

nn = ((45-d)*(45-d-1)) / (2*1);

if(sum+nn>=o) break;

sum += nn;

}


for(e=d+1; e<=44; e++) {

nn = ((45-e)) / (1);

if(sum+nn>=o) break;

sum += nn;

}


for(f=e+1; f<=45; f++) {

nn = 1;

if(sum+nn>=o) break;

sum += nn;

}


sum++;

r[0] = a;

r[1] = b;

r[2] = c;

r[3] = d;

r[4] = e;

r[5] = f;

}


int main(int argc, char *argv[])

{

int r1[6]={0,}; // 로또번호를 저장할 배열 

getLottoNumberByOrderNumber(1, r1); // 로또 순서 1번에 해당하는 로또번호를 r1 배열에 저장

int r2[6]={0,}; // 로또번호를 저장할 배열 

getLottoNumberByOrderNumber(8145060, r2); // 로또 순서 8145060번에 해당하는 로또번호를 r2 배열에 저장


printf("1 ==> %d,%d,%d,%d,%d,%d\n", r1[0],r1[1],r1[2],r1[3],r1[4],r1[5]); // 결과: 1,2,3,4,5,6

printf("8145060 ==> %d,%d,%d,%d,%d,%d\n", r2[0],r2[1],r2[2],r2[3],r2[4],r2[5]); // 결과: 40,41,42,43,44,45

getchar();

 

return 0;

}


조합 순서 번호를 이용하여 로또조합을 구하는 함수입니다.


1 을 입력하면 1,2,3,4,5,6 조합을 얻을 수 있고

8145060 을 입력하면 40,41,42,43,44,45 조합을 얻을 수 있습니다.


Posted by 잇힝2012
,