ICPC网络赛第二场G Limit
生活随笔
收集整理的這篇文章主要介紹了
ICPC网络赛第二场G Limit
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ICPC網絡賽第二場G Limit
題意:
給你數組a和b,求解:
1≤n≤100000,?100≤ai,bi≤100,0≤t≤5.1≤n≤100000,?100≤a_{i},b_{i}≤100,0≤t≤5.1≤n≤100000,?100≤ai?,bi?≤100,0≤t≤5.
題解:
要用到洛必達來做,首先明確一下,洛必達要求分母分子都趨于0
什么情況是無窮?分母無限趨于0,分子為常數時,此時就是無窮情況
那我們可以這樣做,直接將式子洛必達t次,每次洛必達結束后判斷,如果分母無限趨于0(即還存在x),分母為常數(說明分母洛必達后的系數不為0),此時答案就是 ∞∞∞
否則,答案就是常數
分母洛必達好求
分子洛必達為:
對于每次洛必達,我們就求對應的數是否為0(比如第一次洛必達后,就是求∑aibi\sum{a_{i}b_{i}}∑ai?bi?)
代碼:
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define x first #define y second typedef pair<int,int> pii; const int N = 400010; const int mod=998244353; int a[N]; int b[N]; int main() {int n;cin>>n;int t;cin>>t;for(int i=1;i<=n;i++) cin>>a[i]>>b[i];if(t==0){cout<<0<<endl;}else{int now=0;int d=1;for(int i=1;i<=t;i++){now=0;d*=i;if(i==1){ for(int j=1;j<=n;j++)now=now+a[j]*b[j];}else if(i==2){for(int j=1;j<=n;j++)now=now+a[j]*b[j]*b[j]*(-1);}else if(i==3){for(int j=1;j<=n;j++)now=now+a[j]*b[j]*b[j]*2*b[j];}else if(i==4){for(int j=1;j<=n;j++)now=now+a[j]*b[j]*b[j]*(-6)*b[j]*b[j];}else{for(int j=1;j<=n;j++)now=now+a[j]*b[j]*b[j]*24*b[j]*b[j]*b[j];} // cout<<"now="<<now<<endl;if(now!=0 && i!=t){cout<<"infinity"<<endl;return 0;}}int g=__gcd(now,d);now/=g;d/=g;if(d==1) cout<<now<<endl;else cout<<now<<"/"<<d<<endl;}return 0;}總結
以上是生活随笔為你收集整理的ICPC网络赛第二场G Limit的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: url转发怎么提升排名()
- 下一篇: 怎么在网页里插入音乐(怎么在网页里加音乐