码迷,mamicode.com
首页 > 其他好文 > 详细

COJ 0138 NOIP201108计算系数

时间:2015-07-10 13:18:19      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

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,000,0≤n, m≤k,且n+m=k,0≤a,b≤1,000,000。

题解:先胡搞出答案是:C(n,n+m) * a^n * b^m

然后呢,指数部分用快速幂,C用逆元搞。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<cstring>
 7 #define PAU putchar(‘ ‘)
 8 #define ENT putchar(‘\n‘)
 9 using namespace std;
10 int k,a,b,n,m,P=10007;
11 void exgcd(int a,int b,int&x,int&y){
12     if(b==0){x=1;y=0;return;}exgcd(b,a%b,x,y);int t=x;x=y;y=t-a/b*y;
13 }
14 int qpow(int x,int y){
15     int ans=1;x%=P;for(int i=y;i;i>>=1,x=x*x%P)if(i&1)ans=ans*x%P;return ans;
16 }
17 int ine(int T){
18     int x,y;exgcd(T,P,x,y);x%=P;while(x<=0)x+=P;return x;
19 }
20 int C(int n,int m){
21     int s1=1,s2=1;if(m>n-m)m=n-m;
22     for(int i=1;i<=m;i++){
23         s1=s1*(n-i+1)%P;
24         s2=s2*i%P;
25     } return s1*ine(s2)%P;
26 }
27 inline int read(){
28     int x=0,sig=1;char ch=getchar();
29     while(!isdigit(ch)){if(ch==-) sig=-1;ch=getchar();}
30     while(isdigit(ch)) x=10*x+ch-0,ch=getchar();
31     return x*=sig;
32 }
33 inline void write(int x){
34     if(x==0){putchar(0);return;}if(x<0) putchar(-),x=-x;
35     int len=0,buf[15];while(x) buf[len++]=x%10,x/=10;
36     for(int i=len-1;i>=0;i--) putchar(buf[i]+0);return;
37 }
38 void init(){
39     a=read();b=read();k=read();n=read();m=read();
40     write(C(k,n)%P*qpow(a,n)%P*qpow(b,m)%P);
41     return;
42 }
43 void work(){
44     return;
45 }
46 void print(){
47     return;
48 }
49 int main(){
50     init();work();print();return 0;
51 }

 

COJ 0138 NOIP201108计算系数

标签:

原文地址:http://www.cnblogs.com/chxer/p/4635381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!