서로 다른 주사위 x개를 던져 합을 구하는 프로그램

인공지능 알고리즘을 짜기 위해 경우의 수를 공부하던 중 이런 문제가 있었다.

'서로 다른 주사위 3개를 던져 합이 10인 경우의 수를 구하여라.'

문제를 푸는것은 어렵지 않았지만 문득 궁금증이 생겼다.

주사위 수가 네개, 다섯개, 여섯개로 늘어나면 경우의 수는 어떻게 될까?

먼저 주사위 3개를 던져 합의 경우의 수를 구하는 프로그램이다

(일부환경에서는 Syntax Highlighter가 보이지 않습니다.ex) 모바일...)

주사위세개.txt

출력결과 :

이 소스에서 CntOfDice의 숫자를 바꾸고 반복문을 추가하면 네개, 다섯개도 가뿐하다. 소스가 워낙 간단하다 보니 딱히 설명은 필요 없을 것 같다.

(일부환경에서는 Syntax Highlighter가 보이지 않습니다.ex) 모바일...)

출력결과 :

내린 결론은 하나다. 이런 문제 안나온다.

by Conscientia 2013.01.02 14:43

글의 권한은 정등어에게있으며
 무단배포 및 불펌을 금하며 글을 퍼가고 싶으시면 링크만~
부탁드려요 꾸벅
진짜 불펌하지말아요 ㅠㅠ저 웁니다

 




#include <iostream>
using namespace std;

void main(){
 while(1){
  int result[100]={0};   //소인수분해의 결과값 저장 배열
  int N=0;    //소인수분해 할 정수
  int K=2;    //N을 나누어보는 수
  int C=0;    //소인수 계산처리를 위한 변수
  int Y=1;    //소인수 분해한 결과를 출력을 위한 변수

  cout<<"소인수분해 하려는 값을 입력해 주세요(0 to quit) : ";   cin>>N;

  if(N > 1){ //1보다 크다면(1은 소수가 아니다) 소인수분해,아니라면 다시입력

   while(N!=1){
    if(N%K==0){ //나머지가 0이라면 N은 소인수,아니라면 K+1      ++C;      result[C-1]=K;      N=N/K;     }else{
     ++K;     }    }

   //출력 구문    for(int i=0;i<C;i++){     while(result[i]==result[i+1]){      i++;      Y++;     }
    cout<<result[i]<<"^"<<Y;
    Y=1;

    if(i<C-1){
     cout<<" * ";
    }
   }
   //출력 끝

  }else if(N==0){//0을 입력하면 종료
   break;
  }else{
   cout<<"2 이상의 정수를 입력해 주세요"<<endl;
   continue;
  }
  cout<<endl;
 }
}

by Conscientia 2011.07.25 14:25
| 1 |