zoukankan      html  css  js  c++  java
  • P1313 计算系数

    题目描述

    给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数。

    输入输出格式

    输入格式:

    输入文件名为factor.in。

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

    输出格式:

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

    输入输出样例

    输入样例#1: 复制
    1 1 3 1 2
    
    输出样例#1: 复制
    3

    说明

    【数据范围】

    对于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。

    noip2011提高组day2第1题

    注意取mod的位置

    #include<bits/stdc++.h>
    using namespace std;
    const int mod=10007;
    typedef long long ll;
    ll zys[1005];
    ll qpow(ll a,ll b)
    {
        ll ans=1;
        while(b)
        {
            if(b&1ll)ans=ans*a%mod;
            b>>=1ll;
            a=a*a%mod;
        }
        return ans;
    }
    void fjzys(ll a,ll b)
    {
        ll i=2;
        while(a!=1&&a>=i)
        {
            while(a%i==0)
            {
                a/=i;
                zys[i]+=b;
            }
            i++;
        }
    //    int i;
    //    while(a>1)
    //    {
    //        for(i=2; a%i; i++);
    //        zys[i]+=b;
    //        a/=i;
    //    }
    }
    int main()
    {
        ll a,b,k,n,m,c,d=1;
        memset(zys,0,sizeof(zys));
        cin>>a>>b>>k>>n>>m;
        for(ll i=m+1; i<=k; i++)fjzys(i,1);
    //    for(ll i=2; i<=k; i++)cout<<zys[i]<<" ";
        for(ll i=2; i<=n; i++)fjzys(i,-1);
        for(ll i=2; i<=k; i++)if(zys[i])d=d*qpow(i,zys[i])%mod;
        cout<<(((d*qpow(a,n))%mod)*qpow(b,m)%mod)%mod<<endl;
    }
  • 相关阅读:
    poj 3255
    (DP) bzoj 2091
    (最短路) bzoj 2118
    (点双联通分量) poj 2942
    (树直径) bzoj 1509
    (离线处理+BFS) poi Tales of seafaring
    (并查集+DFS) poi guilds
    (记忆话搜索)POI Fibonacci Representation
    (DP) POI Bytecomputer
    (DP) bzoj 1296
  • 原文地址:https://www.cnblogs.com/sphreez/p/8620090.html
Copyright © 2011-2022 走看看