本文主要是介绍2018牛客多校10 A Rikka with Lowbit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://www.nowcoder.com/acm/contest/148/A
对于一个数, ()x+lowbit)/2+(x-lowbit)/2=x
#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
long long qpow(long long x,long long cs)
{long long ans=1;while(cs){if(cs&1)ans=ans*x%mod;x=x*x%mod;cs>>=1;}return ans;
}
int main() {long long a[111111];long long qz[111111];int t;cin>>t;while(t--){long long n,m;cin>>n>>m;long long er=qpow(2,n*m)%mod;for(int i=1;i<=n;i++){scanf("%lld",&a[i]);a[i]%=mod;}qz[1]=a[1];for(int i=2;i<=n;i++){qz[i]=qz[i-1]+a[i];qz[i]%=mod;}int op,l,r;while(m--){scanf("%d %d %d",&op,&l,&r);if(op==2){long long ans=(qz[r]-qz[l]+a[l]+mod)%mod;ans=ans*er%mod;printf("%lld\n",ans);}}}return 0;
}
这篇关于2018牛客多校10 A Rikka with Lowbit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!