vijos - P1739计算系数 (多项式计算 + 杨辉三角形 + 高速幂)

P1739计算系数

Accepted

标签:NOIP提高组2011[显示标签]

描写叙述

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

格式

输入格式

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

输出格式

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

例子1

例子输入1[复制]

1 1 3 1 2

例子输出1[复制]

3

限制

1s

提示

对于30%的数据,有0 ≤ k ≤ 10。

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

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

来源

NOIp2011提高组Day2第一题

这道题目,最開始有点懵。没办法,高中的仅仅是基本都忘得一干二净了,后来百科了一下,发现他妈的就是个简单的组合数

C(k,m) * a^i*b^j(i + j == m)极为(a + b)^m中的第i项

所以直接用高速幂取模解决这个问题

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <cstdio>
#include <string>
#include <ctime>
using namespace std;
typedef long long LL;
const int MAXN = 1e3 + 5;
const int mod = 10007;
LL A[2][MAXN];
LL mod_pow(LL x,LL n,LL mod) {
    if(n == 0) return 1;
    LL ret = mod_pow(x * x % mod, n / 2, mod);
    if(n & 1) ret = ret * x % mod;
    return ret;
}
int main() {
    int a, b, k, n, m;
    int opt = 0;
    scanf("%d%d%d%d%d", &a, &b, &k, &n, &m);
    A[0][0] = 1,A[0][1] = 1;
    for(int i = 2; i <= k; i ++) {
        opt = !opt;
        A[opt][0] = 1;
        for(int j = 1; j < i; j ++) {
            A[opt][j] =(A[!opt][j - 1] + A[!opt][j]) % mod;
        }
        A[opt][i] = 1;
    }
    LL ans = mod_pow(a, n, mod) * mod_pow(b, m, mod) * A[opt][n] % mod;
    printf("%I64d\n",ans);
    return 0;
}
时间: 2024-10-23 09:28:14

vijos - P1739计算系数 (多项式计算 + 杨辉三角形 + 高速幂)的相关文章

RQNOJ659 计算系数

http://www.rqnoj.cn/problem/659 描述 给定一个多项式(ax + by)^k,请求出多项式展开后x^n * y^m项的系数. 格式 输入格式 共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开. 输出格式 输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果. 样例1 样例输入1[复制] 1 1 3 1 2 样例输出1[复制] 3 限制 1s 提示 对于30%的数据,有0 ≤ k ≤ 10: 对于50%的

codevs1137 计算系数

1137 计算系数 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开. 输出描述 Output Description 输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,

洛谷P1313 计算系数

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 ≤1

计算系数(noip2011)

[问题描述]给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数.[输入]输入文件名为 factor.in.共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开.[输出]输出文件名为 factor.out.输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果.[输入输出样例] factor.in factor.out 1 1 3 1 2 3 [数据范围] 对于 30%的数据,有0≤k≤10:对

noip2011 计算系数

P1313 计算系数 431通过 1.4K提交 题目提供者该用户不存在 标签数论(数学相关)2011NOIp提高组 难度普及/提高- 提交该题 讨论 题解 记录 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开. 输出格式: 输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模

codevs 1137 计算系数

传送门 1137 计算系数 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开. 输出描述 Output Description 输出共 1 行,包含一个整数,表示所求的系

2011 计算系数

计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开. 输出格式: 输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果. 输入样例: 1 1 3 1 2 输出样例: 3 说明 [数据范围] 对于30% 的数据,有 0 ≤k ≤10 : 对于50% 的数据,有 a = 1,b

计算系数(NOIP2011 day2)

给定一个多项式 (ax + by)k . 输入a,b,k,n,m. 请求出多项式展开后 xnym 项的系数. [数据范围] 对于 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. 1 const 2 maxn=1000; 3 md=10007; 4 var 5 f:array[0..maxn,0..maxn] of longint; 6 a,

COJ 0138 NOIP201108计算系数

NOIP201108计算系数 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数. 输入 共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开. 输出 输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果. 输入示例 1 1 3 1 2 输出示例 3 其他说明 [数据范围]0≤k≤1