zoukankan      html  css  js  c++  java
  • [Luogu1313][NOIP2011提高组]计算系数

    题目描述

    给定一个多项式 (by+ax)k(by+ax)^k(by+ax)k ,请求出多项式展开后 xn×ymx^n imes y^mxn×ym 项的系数。

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

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

    说明

    【数据范围】

    对于 30%30\%30% 的数据,有 0≤k≤10 0 ≤k ≤100k10 ;

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

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

    noip2011提高组day2第1题


    题目过水。

    二项式定理众所周知。

    然后就是裸的逆元了...

    ans = $ extrm{C}_{k}^{n} * a^{n}*b^{m}$

    取模要彻底。


    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    int a, b, n, m, k;
    #define ll long long
    #define mod 10007
    inline ll ksm(ll x, ll y)
    {
        ll res = 1;
        while(y)
        {
            if (y&1) res=(ll)(res*x) % mod;
            x = (x * x) %mod;
            y >>= 1;
        }
        return res;
    }
    
    ll fac[1000005];
    
    int main()
    {
        scanf("%d%d%d%d%d", &a, &b, &k, &n, &m);
        fac[1] = 1;
        for (int i = 2 ; i <= k ; i ++) fac[i] = (fac[i-1] * i) % mod;
        ll ans = (((ksm(a, n) * ksm(b, m)) % mod * fac[k]) % mod * (ksm(fac[k-n], mod-2) * ksm(fac[n], mod-2)) % mod) % mod;
        printf("%lld
    ", ans);
        return 0;
    }

     $sum_{age=16}^{18} hardworking = success$

  • 相关阅读:
    iOS 后台运行
    内存管理
    ios -晋级之路 如何去掉tableView多余行的横线
    ios 晋级之路- block深入
    iOS 晋级之路- 调用相机和相册的功能
    iOS开发 --定位
    学习笔记 ios开发 手势
    排序法系列-快速排序法
    计算文本的高度BoundingRectWithSize:options:context
    NSClassFromString的用法
  • 原文地址:https://www.cnblogs.com/BriMon/p/9387688.html
Copyright © 2011-2022 走看看