HDU2049

3513 단어 어긋나다
쉽 지 않 은 시리즈(4)-코 신랑
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 27461 Accepted Submission(s): 10032
Problem Description 국경절 기간 에 성도 HZ 는 성대 한 단체 결혼식 을 올 렸 습 니 다.결혼식 을 다양 하 게 진행 하기 위해 사 회 는'신랑 시험'이라는 재 미 있 는 프로그램 을 임시로 생각 해 냈 습 니 다.구체 적 인 조작 은 다음 과 같 습 니 다.
우선 신부 들 에 게 거의 똑 같이 꾸 미 고 커 다란 빨 간 뚜껑 을 덮 고 무 작위 로 일렬 로 앉는다.그리고 신랑 여러분 에 게 자신의 신 부 를 찾 으 라 고 하 세 요.한 사람 당 한 사람 만 찾 을 수 있 고 여러 사람 이 한 사람 을 찾 는 것 을 허락 하지 않 습 니 다.마지막 으로 뚜껑 을 열 고 상 대 를 잘못 찾 으 면 대중 앞에서 무릎 을 꿇 고 빨래판 을 비 벼 야 합 니 다.
신랑 이 되 는 것 도 쉽 지 않 을 것 같은 데..
만약 에 모두 N 쌍 의 신혼부부 가 있다 고 가정 하면 그 중에서 M 명의 신랑 이 신 부 를 잘못 찾 았 는데 이런 상황 이 발생 하 기 를 바 라 는 것 은 모두 몇 가지 가능성 이 있 습 니까?
Input 입력 데이터 의 첫 줄 은 하나의 정수 C 로 테스트 인 스 턴 스 의 개 수 를 나타 내 고 그 다음 에 C 줄 데 이 터 를 나타 내 며 줄 마다 두 개의 정수 N 과 M(1)을 포함한다.
#include "cstring"
#include "cstdio"
#include "string.h"
#include "iostream"
#include "cmath"

using namespace std;

long long store[30][30];

long long Combination(long long x, long long y)
{
    __int64 sum = 1;

    for (int i = x; i >= x - y + 1; --i)

        sum *= i;

    for (int j = y; j >= 2; --j)

        sum /= j;

    return sum;
}


int main()
{
    int ncase;
    while (scanf("%d", &ncase) != EOF)
    {
        while (ncase--)
        {
            long long total, wrong;
            scanf("%lld%lld", &total, &wrong);
            long long a[30];
            a[1] = 0;
            a[2] = 1;
            for (int i = 3; i <= wrong; i++)
            {
                a[i] = (i - 1)*(a[i - 1] + a[i - 2]);
            }
            printf("%lld
"
, a[wrong] * Combination(total, wrong)); } } }

좋은 웹페이지 즐겨찾기