题解 P3909 【异或之积】
hhoppitree · · 题解
题意简述:
给定序列
题目解法:
这里分享一种时间复杂度
先推一波式子:
然后 for 循环一遍,同时记录
值得注意的是这三个变量更新的顺序要注意,而且答案要记得
最后,记得开 long long !
正确代码:
#include<bits/stdc++.h>
#define int long long
#define mod 1000000007
using namespace std;
inline int read(){
int res=0;
bool zf=0;
char c;
while(((c=getchar())<'0'||c>'9')&&c!='-');
if(c=='-')zf=1;
else res=c-'0';
while((c=getchar())>='0'&&c<='9')res=(res<<3)+(res<<1)+c-'0';
return (zf?-res:res);
}
signed main(){
int n=read(),sum1=0,sum2=0,sum3=0;
for(register int i=1;i<=n;++i){
int t=read();
sum3=(sum3+sum2*t)%mod;
sum2=(sum2+sum1*t)%mod;
sum1=(sum1+t)%mod;
}
printf("%d\n",sum3*6%mod);
return 0;
}
如果您没有看懂这篇题解,可以在评论区问我,我将会回答您的问题并且修改这篇题解,使它变得更加通俗易懂,服务更多的
如果您看懂了这篇题解,可以点个赞,使这篇题解的排名上升,服务更多的