hdu 2065(모 함수)
1973 단어 수학.
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1726 Accepted Submission(s): 724
Problem Description
n 가지 아 이 템 이 있 고 모든 아 이 템 의 수량 을 알 고 있 습 니 다.그 중에서 m 개 아 이 템 의 배열 수 를 선택해 야 합 니 다.예 를 들 어 두 가지 아 이 템 이 있 는데 A,B 이 고 수량 이 모두 1 이 며 그 중에서 두 가지 아 이 템 을 선택 하면'AB','BA'두 가지 가 배열 된다.
Input
각 조 의 입력 데 이 터 는 두 줄 이 고 첫 번 째 줄 은 두 개의 수 n,m(1<=m,n<=10)로 물품 수 를 나타 내 며 두 번 째 줄 은 n 개의 수 를 나타 내 며 각각 n 개의 물품 의 수량 을 나타 낸다.
Output
각 그룹의 데이터 출력 배열 수 에 대응 합 니 다.(어떠한 연산 도 2^31 의 범 위 를 초과 하지 않 습 니 다)
Sample Input
2 2
1 1
Sample Output
2
Author
xhd
Recommend
xhd
이 문 제 는 AB 와 BA 가 서로 다른 배열 조합 에 속 하기 때문에 일반적인 생 성 함 수 를 간단하게 사용 하지 말고 배열 조합 을 처리 할 수 있 는 지수 형 생 성 함 수 를 사용 해 야 한다.공식 과 원 리 는 전 재 된 황소 블 로그 이다.
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m;
int num[10];
double a[100];
double b[100];
double fun(int s)
{
int i;
double sum=1;
for(i=2;i<=s;i++)
sum*=i;
return sum;
}
void Generating_function()
{
int i,j,k;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
a[0]=1;
for(i=1;i<=n;i++)
{
for(j=0;j<=m;j++)
{
for(k=0;k<=num[i]&&k+j<=m;k++)
b[k+j]+=a[j]*1.0/fun(k);
}
memcpy(a,b,sizeof(b));
memset(b,0,sizeof(b));
}
}
int main()
{
int i;
while(~scanf("%d%d",&n,&m))
{
for(i=1;i<=n;i++)
scanf("%d",&num[i]);
Generating_function();
printf("%0.lf
",a[m]*fun(m));
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Coq에서 증명된 이중 부정 주위의 증명이중 부정 가져오기 이중 부정 해소를 증명할 수 없지만 삼중 부정 해소를 증명할 수 있다 이중 부정 해소의 이중 부정 이중 부정 해소와 배중률 동치 고전 이론을 얻으려면 직관주의 이론에 어느 것을 넣어도 된다는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.