题解 P6211 【「SWTR-04」Meeting in the Forest】
Rubidium_Chloride · · 题解
这题是数论题吧。
0.前言
请容许我无耻地放一下我的博客的链接……
接下来,让我们进入正题。
1.分析题目
1.1 题目大意
题目传送门
即求
其中
1.2 分析做法
仔细想想,什么东西有和
本蒟蒻前想后想,终于想出了一个相同的东西:韦达定理。
(话说提示里不是有吗?)
2.韦达定理
如果您还不知道伟大韦达定理,珂以看这里。
证明如下:
由于代数基本定理,有
那么根据因式分解基本常识,可以得到
这个方程的
所以可以得到:
将
其各项系数应该与
于是可得以下等式:
将每行等式同时除以
这不就和题目要我们求的东西差不多嘛?
3.最后分析与Code
(没错,你们最爱的代码君将在若干行后到达题解)
由第
所以我们就有了如下的代码:
#include<bits/stdc++.h>
#define N 200009
using namespace std;
typedef long long ll;
ll n,a[N],b[N],ans,flag=1;
const ll MOD=1e9+7;
inline int read(){//写了一个快读卡常
int x=0;int f=1;int c=getchar();
while(!isdigit(c)) {if(c=='-') f=-1;c=getchar();}
while(isdigit(c)) {x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return x*f;
}
int main(){
n=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=1;i<=n;i++){
flag*=-1;//flag就是用来计算(-1)^n的
b[i]=read();
ans+=(a[i]*b[i]*flag);ans%=MOD;
}
printf("%lld",(ans+MOD)%MOD);//别忘了最后负数取模!
return 0;
//}禁止抄袭!
4.后记
看我这么努力地写了这篇通俗易懂的题解,还附上了十分具体的证明,您不给我点个赞吗?
最后的最后,管理大大求过。