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 조합을 얻을 수 있습니다.
'프로그래밍' 카테고리의 다른 글
로또번호 자동 생성 (응용편)(c/c++)(로또함수) (0) | 2014.08.04 |
---|---|
random, rand(), 큰수 랜덤, WELL 랜덤 (c/c++) (0) | 2014.08.04 |
로또번호 자동 생성 (랜덤, random)(c/c++)(로또함수) (0) | 2014.08.04 |
로또번호로 몇번째 조합인지 알아내기 (c/c++)(로또함수) (0) | 2014.08.03 |
로또 완전 조합 루프문 (c/c++)(로또함수) (0) | 2014.08.03 |