列表

详情


NC16596. [NOIP2011]计算系数

描述

给定一个多项式(ax+by)k,请求出多项式展开后xnym项的系数。

输入描述

共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。

输出描述

输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果

示例1

输入:

1 1 3 1 2

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 6ms, 内存消耗: 4232K, 提交时间: 2022-09-24 11:00:24

#include<stdio.h>
#define p 10007
int c[1001][1001];
int main(){
	int a,b,k,n,m;
	scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
	a%=p;b%=p;
	c[1][0]=b;c[1][1]=a;
	for(int i=2;i<=k;i++){
		for(int j=0;j<=i&&j<=n;j++){
			c[i][j]=c[i-1][j]*b%p;
			if(j>0)
				c[i][j]=(c[i][j]+c[i-1][j-1]*a)%p;
		}
	}
	printf("%d\n",c[k][n]);
}

C++ 解法, 执行用时: 11ms, 内存消耗: 8204K, 提交时间: 2021-10-22 22:50:47

#include<bits/stdc++.h>
using namespace std;
long long a,b,k,n,m,f[1005][1005];
int main(){
	cin>>a>>b>>k>>n>>m;
	f[1][0]=b;
	f[1][1]=a;
	for(int i=2;i<=k;i++)
		for(int j=0;j<=k;j++) f[i][j]=(f[i-1][j]*b+f[i-1][j-1]*a)%10007;
	cout<<f[k][n];
}

Python3(3.5.2) 解法, 执行用时: 34ms, 内存消耗: 3480K, 提交时间: 2019-11-03 15:14:34

a,b,k,n,m=map(int,input().split(' '))
ans=pow(a,n,10007)*pow(b,m,10007)
n=min(n,m)
m=1
for i in range(0,n):
    ans=(ans*(k-i))//(i+1)
print(ans%10007)

pypy3 解法, 执行用时: 129ms, 内存消耗: 25948K, 提交时间: 2022-03-28 18:26:36

a,b,k,n,m=map(int,input().split())
import math
print(0 if n+m!=k else (((math.factorial(k)//math.factorial(n))//math.factorial(k-n))*a**n*b**m)%10007)

上一题