lotto001.cpp
#include <stdio.h>
// 로또 조합이 8145060 조합중 몇번째 조합인지 알아내기
int getOrderNumber(int r[])
{
int sum=0,nn=0,a=0,b=0,c=0,d=0,e=0,f=0;
for(a=1; a<r[0]; a++) {
nn = ((45-a)*(45-a-1)*(45-a-2)*(45-a-3)*(45-a-4)) / (5*4*3*2*1);
sum += nn;
}
for(b=a+1; b<r[1]; b++) {
nn = ((45-b)*(45-b-1)*(45-b-2)*(45-b-3)) / (4*3*2*1);
sum += nn;
}
for(c=b+1; c<r[2]; c++) {
nn = ((45-c)*(45-c-1)*(45-c-2)) / (3*2*1);
sum += nn;
}
for(d=c+1; d<r[3]; d++) {
nn = ((45-d)*(45-d-1)) / (2*1);
sum += nn;
}
for(e=d+1; e<r[4]; e++) {
nn = ((45-e)) / (1);
sum += nn;
}
for(f=e+1; f<r[5]; f++) {
nn = 1;
sum += nn;
}
sum++;
return sum;
}
int main(int argc, char *argv[])
{
int r1[6]={1,2,3,4,5,6};
int r2[6]={40,41,42,43,44,45};
printf("1,2,3,4,5,6 ==> %d\n", getOrderNumber(r1)); // 결과: 1
printf("40,41,42,43,44,45 ==> %d\n", getOrderNumber(r2)); // 결과: 8145060
getchar();
return 0;
}
로또번호로 몇번째 조합인지를 구하는 함수 입니다.
1,2,3,4,5,6 은 첫번째 조합
1,2,3,4,5,7 은 두번째 조합
....
40,41,42,43,44,45 은 마지막 8145060 번째 조합 입니다.
'프로그래밍' 카테고리의 다른 글
로또번호 자동 생성 (응용편)(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 |