问题 L: 超超的中等意思
生活随笔
收集整理的這篇文章主要介紹了
问题 L: 超超的中等意思
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題 L: 超超的中等意思
時(shí)間限制:?1 Sec??內(nèi)存限制:?128 MB提交:?366??解決:?27
[提交] [狀態(tài)] [命題人:jsu_admin]
題目描述
已知p,q,k和一個(gè)難搞得多項(xiàng)式(px+qy)^k。想知道在給定a和b的值下計(jì)算多項(xiàng)式展開后x^a*y^b得系數(shù)s。輸入
多組輸入,每組數(shù)據(jù)一行輸入p,q,k,a,b。其中保證k = a+b,所有輸入都為非負(fù)數(shù)且不大于50000輸出
輸出系數(shù)s對2^61-1取模后的值樣例輸入?Copy
1 1 2 1 1樣例輸出 Copy
2?
?
?
式子我們很容易就可以得知我們要求的是那個(gè)系數(shù),?答案也就是求 組合數(shù)*x?的系數(shù)的?a?次方*y?的系數(shù)的?b?次方,
根據(jù)這個(gè)
我們在計(jì)算次方的時(shí)候可以用快速冪節(jié)約時(shí)間,組合數(shù)也可以由 ????C(m+1,n+1)
=C(m,n)+C(m+1,n)遞推打表
?
?
1 #include<iostream> 2 #include<cmath> 3 //using namespace std; 4 //#include <iostream> 5 #include<string.h> 6 #include <stdio.h> 7 #define ll long long 8 typedef __int128 lll; 9 const lll MOD = 2305843009213693951; 10 using namespace std; 11 const int N = 10000; 12 lll nn[N],mm[N]; 13 14 15 lll dp[50020][50020]; 16 void D() 17 { 18 lll n, k; 19 dp[1][1] = 1; 20 for(int i = 1; i < 50010; i++) 21 { 22 dp[i][0] = 1; 23 } 24 for(int i = 2; i < 50010; i++) 25 { 26 for(int j = 1; j <= i; j++) 27 dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]; 28 } 29 //int n, k; 30 //while(scanf("%d %d", &n, &k) == 2) 31 // { 32 //printf("%d\n", dp[n][k]); 33 // } 34 return ; 35 // return 0; 36 } 37 lll C(lll n,lll m) 38 { 39 if(m==0||n==m) return 1; 40 lll sb=min(m,n-m); 41 lll f=1,f1; 42 for(lll i=1;i<=sb;i++) 43 { 44 f1=f*(n-i+1)/(i); 45 f=f1; 46 } 47 return f1; 48 } 49 lll pow64(lll x, lll y) { 50 51 if(!y) return 1; 52 if(x >= MOD) x %= MOD; 53 lll ans = 1; 54 while(y) { 55 56 if(y & 1) ans = ans * x % MOD; 57 x = x * x % MOD; 58 y >>= 1; 59 60 } 61 return ans; 62 63 } 64 int main() 65 { 66 int p,q,k,a,b; 67 // D(); 68 while(scanf("%d%d%d%d%d",&p,&q,&k,&a,&b)!=EOF){ 69 70 // long long m,n; 71 // while(cin>>m>>n)///C(m,n) 72 // { 73 // cout<<C[m][n]<<endl; 74 // } 75 //int c = (int)C(m,n); 76 //int l = (int)pow(p,b); 77 //int f = (int)pow(q,n); 78 //prlong longf("%lld",(long long)pow(p,b)); 79 printf("%lld\n",ll(pow64(p, a) * pow64(q, b) % MOD * C(k, a) % MOD)); 80 // return 0; 81 } 82 } View Code?
?轉(zhuǎn)載于:https://www.cnblogs.com/DWVictor/p/10202520.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的问题 L: 超超的中等意思的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: final使用详解
- 下一篇: Android源码分析(十一)-----