• 计算系数


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

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

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

    Sample Input
    1 1 3 1 2

    Sample Output
    3

    Data Constraint
    对于 30%的数据,有 0≤k≤10;

    对于 50%的数据,有 a = 1,b = 1;

    对于 100%的数据,有 0≤k≤1,000,0≤n, m≤k,且 n + m = k,0≤a,b≤1,000,000。

    .
    .
    .
    .
    .
    程序:
    //50分

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a,b,k,n,m,s[1001][501];
    
    int main()
    {
    	scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    	if (k==0) 
    	{
    		cout<<1;
    		return 0;
    	}
    	if (k==1)
    	{
    		if (n==0&&m==1) cout<<b;
    		if (n==1&&m==0) cout<<a;
    		return 0;
    	}
    	if (a!=1||b!=1) 
    	{
    		cout<<10006;
    		return 0;
    	}
    	memset(s,0,sizeof(s));
    	s[0][1]=1;
    	s[1][1]=1;
    	for (int i=2;i<=k;i++)
    	{
    		s[i][1]=1;
    		for (int j=2;j<=i/2+1;j++)
    		{
    			if (j==i/2+1&&i%2==0) 
    			{
    				s[i][j]=(s[i-1][j-1]*2)%10007;
    				break;
    			}
    			s[i][j]=(s[i-1][j-1]+s[i-1][j])%10007;
    		}
    	}
    	if (n==k||m==k)
    	{
    		cout<<1;
    		return 0;
    	}
    	int w=min(n,m);
    	printf("%d",s[k][w+1]%10007);
    	return 0;
    }
    
  • 相关阅读:
    火狐显示不安全链接
    signal信号
    I/O缓冲
    [pe530]GCD of Divisors
    学校寒假集训作业
    纳克萨玛斯「GDOI2007」(网络流)
    [清华集训2016] 汽水
    有上下界网络流
    [AHOI2014]支线剧情(有上下界的网络流)
    [SCOI2016]妖怪
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10292784.html
Copyright © 2020-2023  润新知